FX最強ツール サイクル理論で稼ぎます!

サイクル理論でボトムを見極め、そこから自動売買を稼働させ、確実に利益を積み上げていきます。

ブログ名

FX サイクル理論 と EA ・・・ 

こんにちは、兼業トレーダのタケシです。

 

本日はフレックス勤務にてただ今帰宅できました。

今日の業務はいわゆるレントゲン撮影でした。

月曜日の割りに暇暇でした。

じわじわと病院がコロナ専用病院化しているような???

 

それでは為替にいきましょう。

 

なーんか今年も相場に集中できそうにないので、EAを稼働させてみようかと

 

週足のサイクルトップがおそらく過ぎた通貨ペア

または3回目の日足サイクルのサイクルトップが過ぎた通貨ペアに対し

売り専用EAを稼働させてみようと考えています。

 

現時点での候補通貨ペアは

豪ドル円 週足サイクル本数15本目 うまくいけばボロ儲け

ニュージーランドドル円 週足サイクル本数20本目

AUDUSD 週足サイクル本数15本目 うまくいけばボロ儲け

NZDUSD 週足サイクル本数20本目

AUDCAD 週足サイクル本数16本目 うまくいけばボロ儲け

EURCAD 週足サイクル本数13本目 うまくいけばボロ儲け

 

使用EAはシンプルに売りエントリーのみ

マーチンゲールは使用してみようかと

エントリーは移動平均線とローソク足との位置関係にて

エグジットは固定pipsで利食いと損切り

ひな型がこんな感じです。

 

//+---------------------------------------------------------------------+

//                          パラメーター設定

//+---------------------------------------------------------------------+

 

input string C0="---- Base Setting ----";

input int MAGIC = 20210201;

input int Slippage=3;

 

 

//取引ロット関連

input int MaxPosition=4;

input double BaseLots=0.10;

input int takeprofit=30;

input int stoploss=20;

 

//マーチンゲール

input int LotsAdjustPer=3;//最大マーチンゲール実施回数

input double LotsAdjustPer2=2.00;//マーチン倍率

 

//その他項目

double Lots;

 

input string C1="フィルター|移動平均線とローソク足(順張り)";

int TimeScale1 = 15;

int Entry1 = 1;//1_直近確定の足、2_二本前、3_三本前 

input int MaType1 = 0; //平均線種類

input int MA1_1 = 10; //移動平均線期間

input int PriceType1 = 0; //価格タイプ

 

 

//+---------------------------------------------------------------------+

//                          一般関数

//+---------------------------------------------------------------------+

 

double AdjustPoint(string Currency)//ポイント調整

{

        int Symbol_Digits=(int)MarketInfo(Currency,MODE_DIGITS);

        double Calculated_Point=0;

        if (Symbol_Digits==2 || Symbol_Digits==3)

        {

               Calculated_Point=0.01;

        }

        else if (Symbol_Digits==4 || Symbol_Digits==5)

        {

               Calculated_Point=0.0001;

        }

        else if (Symbol_Digits==0)

        {

               Calculated_Point=1;

        }

        return(Calculated_Point);

}

 

int AdjustSlippage(string Currency,int Slippage_pips )//スリッページ調整

{

        int Calculated_Slippage=0;

        int Symbol_Digits=(int)MarketInfo(Currency,MODE_DIGITS);

        if (Symbol_Digits==2 || Symbol_Digits==3)

        {

               Calculated_Slippage=Slippage_pips;

        }

        else if (Symbol_Digits==4 || Symbol_Digits==5)

        {

               Calculated_Slippage=Slippage_pips*10;

        }

        return(Calculated_Slippage);

}

 

int LongPosition()//ロングポジション数を取得

{

        int buys=0;

        for(int i=0;i<OrdersTotal();i++)

        {

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)

               {

                      if(OrderType()==OP_BUY)  buys++;

               }

        }

        return(buys);

}

 

int ShortPosition()//ショートポジション数を取得

{

        int sells=0;

        for(int i=0;i<OrdersTotal();i++)

        {

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)

               {

                      if(OrderType()==OP_SELL) sells++;

               }

        }

        return(sells);

}

 

//+---------------------------------------------------------------------+

//                          エントリ関連関数

//+---------------------------------------------------------------------+

 

//ポジションエントリ関数

void OpenOrder(int EntryPosition)

{

        int res;

        bool Modified;

        double SL;

        double TP;

        int SLP=AdjustSlippage(Symbol(),Slippage );

        

        //ロットサイズ調整

        Lots=LotsAdjustment(LotsAdjustPer,LotsAdjustPer2);//マーチンゲール

        

        if( EntryPosition == 1 ) //買いの場合のエントリ条件

        {

               res=OrderSend(Symbol(),OP_BUY,Lots ,Ask,SLP,0,0,"Sell only 20210201",MAGIC,0,Red);

               if (OrderSelect(res,SELECT_BY_TICKET)==true)

               {

               if (stoploss!=0) SL=OrderOpenPrice()-stoploss*AdjustPoint(Symbol());

               if (takeprofit!=0) TP=OrderOpenPrice()+takeprofit*AdjustPoint(Symbol());

               }

               if(SL!=0 || TP!=0) Modified=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red);

        }

        else if(EntryPosition == -1 ) //---- 売りエントリ

        {

               res=OrderSend(Symbol(),OP_SELL,Lots,Bid,SLP,0,0,"Sell only 20210201",MAGIC,0,White);

               if(OrderSelect(res,SELECT_BY_TICKET)==true)

               {

               if(stoploss!=0) SL=OrderOpenPrice()+stoploss*AdjustPoint(Symbol());

              if(takeprofit!=0) TP=OrderOpenPrice()-takeprofit*AdjustPoint(Symbol());

               }

               if(SL!=0 || TP!=0) Modified=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,White);

        }

        return;

}

 

//ポジション数調整関数

double LotsAdjustment(int MaxMartin, double Multi)

{

        int Loss_Count = 0;

        for (int i= OrdersHistoryTotal()-1;i>=0;i--)

        {

               if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)

               {

                      if (OrderMagicNumber()==MAGIC && OrderSymbol()==Symbol())

                      {

                             if(OrderProfit()<=0)

                             {

                                    Loss_Count++;

                             }

                             else if(OrderProfit()>0)

                             {

                                    break;

                             }

                      }

               }

        }

        if (Loss_Count>=MaxMartin)

        {

               Loss_Count=MaxMartin;

        }

        double LotSize= BaseLots*MathPow(Multi,Loss_Count);

        if (LotSize>=MarketInfo(Symbol(),MODE_MAXLOT))

        {

               LotSize=MarketInfo(Symbol(),MODE_MAXLOT);

        }

        return(LotSize);

}

 

//+---------------------------------------------------------------------+

//                          エグジット関連関数

//+---------------------------------------------------------------------+

 

//ポジションクローズ関数

void CloseOrder(int ClosePosition)

{

        for(int i=OrdersTotal()-1;i>=0;i--)

        {

               int res;

               if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

               {

                      if(OrderMagicNumber()==MAGIC && OrderSymbol()==Symbol())

                      {

        if(OrderType()==OP_SELL && (ClosePosition==-1 || ClosePosition==0 )) //売りポジションのクローズ

                             {

        res=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10,Silver);

                             }

       else if(OrderType()==OP_BUY && (ClosePosition==1 || ClosePosition==0 ) ) //買いポジションのクローズ

                             {

       res=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10,Silver);

                             }

                      }

               }

        }

}

 

//+---------------------------------------------------------------------+

//                           インジケーター

//+---------------------------------------------------------------------+

 

//1-4 フィルター|移動平均線とローソク足(終値)の位置関係(順張り)

int Indicator1_4(int i,int TimeScale,int LineType,int MaPer, int PType)

{

        double Ma1=iMA(NULL,TimeScale,1,0,0,0,i);

        double Ma2=iMA(NULL,TimeScale,MaPer,0,LineType,PType,i);

        

        int ret=0;

        if (Ma1>Ma2)

        {

               ret=1;

        }

        else if (Ma1<Ma2)

        {

               ret=-1;

        }

        return(ret);

}

 

//+---------------------------------------------------------------------+

//                          ティック毎の処理

//+---------------------------------------------------------------------+

void start()

{

 

        

        // ニューバーの発生直後以外は取引しない

        static datetime bartime=Time[0];

        if (Time[0]==bartime) return;

        bartime=Time[0];

 

        //各種パラメーター取得

        int EntryBuy=0;

        int EntrySell=0;

        int ExitBuy=0;

        int ExitSell=0;

        

        int LongNum=LongPosition();

        int ShortNum=ShortPosition();

        

        //クローズ判定

        //買いのクローズロジックは選択されていません

        //売りのクローズロジックは選択されていません

 

        //エントリ基準取得

        int Strtagy1=Indicator1_4(Entry1,TimeScale1,MaType1,MA1_1,PriceType1);

        int TotalNum=ShortNum+LongNum;

        

        //エントリ判定

        //買いエントリのロジックは選択されていません

        if*1

        {

               EntrySell=1;

        }

 

        //オープン処理

        if(EntryBuy!=0)

        {

               OpenOrder(1);

        }

        if(EntrySell!=0)

        {

               OpenOrder(-1);

        }

}

 

まだまだ改良点だらけですが

サイクル理論で下落相場が仮定できれば、数週間単位で利益が得られる予定ですが・・・

 

結果はいかに!

 

それでは2021年、いかなる危機が世界を襲って来たとしても、皆さんは稼ぎに稼ぎまくって金銭的勝者になってくださいね。

 

ではまたです。

 

めざせ!ランキング1位にご協力をお願いいたします。

にほんブログ村 為替ブログへ
FXに関する人気ブログはこちらですよ(o^―^o)

 

*1:TotalNum<MaxPosition && Strtagy1==-1