MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1552

 
законопослушный гражданин:

フクロウはアルゴリズムに従ってトレードを開始する必要があります。

ストップしたら、次の取引はマーチンで、私が指定した倍率になるまで続けます(関数 -OrdersClose = ......;)。

さらに、ターミナルと一緒にフクロウが無効になっている場合、別のフクロウで「自動取引」ボタンを押すだけで、次の取引はマーチンゲールによって増加した最後のロットではなく、開始ロットから開始されます。

また、スケジュールを付けると良いのですが、このアイデアは今思いつきました。

例えば、月曜日の10時からスタートロットで起動し、日中に何らかの結果が出たのでスイッチを切り、火曜日の朝10時に再び起動し、スタートロットでスタートさせるといった具合です。

のすべてです。

この問題に最後まで取り組むには?

 
законопослушный гражданин:

この質問の真意は?

出れば いい、出れば いい。

が、消えてもまた同じ質問をされる。

 
MakarFX:

あなたが答えればあなたが答える

が、消えてもまた同じ質問をされる。

グローバル変数の作成方法を教えていただいたので、試してみましたが、疑問があります。

私はまだこれが得意ではありません。私はすでにdatetime OpenTime;を持っています - 私はそれをdatetimeStart または追加で置き換えるべきですか?

"そして、後に開閉注文がない場合 "開始 "Lots=Lot;"-どこを参照すればいいのか全く不明ですが?

それから、梟のロジック、私が梟に求めるものを簡単に説明してほしいということでした。

シャットダウン時にロットを自動的にリセットする方法は、まだ回答されていません。

 
законопослушный гражданин:

グローバル変数の作成方法を教えていただいたので、試してみましたが、疑問があります。

すでにdatetime OpenTime;がありますが、これをdatetimeStartに 置き換えるべきでしょうか、それとも追加すべきでしょうか?

"そして、後に開閉注文がない場合 "開始 "Lots=Lot;"-どこを参照すればいいのか全く不明ですが?

それから、フクロウに何を求めるのか、そのロジックを簡単に説明せよということでしたね。

シャットダウン時に自動でロットをリセットさせる方法を質問しても、回答はありませんでした。

EAのロジックの説明を求めたのは、発生した問題ではなく、大まかな動作のことです

例えば

シグナルがあれば、注文を出す。

注文が利益で終了したら、新しいシグナルを待つ

注文が損失で終了した場合、ロットを増やして新しいシグナルを待ちます。


私はあなたの戦略を必要としません、私はちょうどEAが何をすべきかを理解する必要があります。

 
законопослушный гражданин:

グローバル変数の作成方法を教えていただいたので、試してみましたが、疑問があります。

すでにdatetime OpenTime;がありますが、これをdatetimeStartに 置き換えるべきでしょうか、それとも追加すべきでしょうか?

"そして、後に開閉注文がない場合 "開始 "Lots=Lot;"-どこを参照すればいいのか全く不明ですが?

それから、フクロウに何を求めるのか、そのロジックを簡単に説明せよということでしたね。

シャットダウン時に自動的にロットリセットを行う方法についての質問に対する回答が得られないのですが。

ここでは手始めにその機能を紹介します。

//+----------------------------------------------------------------------------+
//|  Размер лота/профита и время последней закрытой позиции                    |
//|  1 - возвращает размер лота                                                |
//|  2 - возвращает размер профита с учетом комиссии и свопа                   |
//|  3 - возвращает время закрытия ордера                                      |
//+----------------------------------------------------------------------------+
double GetInfoLastPos(int a=1)
  {
   datetime t=0;
   double result=0,l=0,p=0;
   int i=OrdersHistoryTotal();

   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if((OrderSymbol()==_Symbol)&&(OrderMagicNumber()==Magic))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
              }
           }
        }
     }
   if(a==1) {result=l;} else
   if(a==2) {result=p;} else
   if(a==3) {result=(double)t;}
   else     {result=0;}
   return(result);
  }

赤字になったら

   if(GetInfoLastPos(2)<0)
     {Lots=NormalizeDouble(GetInfoLastPos(1)*K_Martin,DigitsLot);}
   else 
     {Lots=NormalizeDouble(Lot,DigitsLot);}
 

について

datetime Start;

int OnInit()
{
   Start=TimeCurrent();
.....................
}
void OnTick()
{
   if (!IsTradeAllowed()) 
   {
      DrawLABEL("Торговля",0,0,0,Red,"Торговля запрещена");
      Start=TimeCurrent();
      return;
   } 
.....................
}

最後に閉じた注文の時刻がアドバイザーの開始時刻より短い場合

   if(GetInfoLastPos(3)<Start)
     {Lots=NormalizeDouble(Lot,DigitsLot);}
 
MakarFX:

EAのロジックの説明を求めたのは、発生した問題ではなく、一般的な動作についてです

例えば

シグナルがあれば、注文を出す。

注文が利益で終了したら、新しいシグナルを待つ

注文が損失で終了した場合、ロットを増やして新しいシグナルを待ちます。


私はあなたの戦略を必要としません、私はちょうどEAが何をすべきかを理解する必要があります。

シグナルが発生したら、最初のロットで注文を出す。

注文が利益で終了した場合、新しいシグナルを待ちます。

注文が損失で終了した場合、ロットを増やして新しいシグナルを待ちます。

利益がxxxx(入金通貨)に達した場合、アドバイザーはすべての取引を終了し、ロットを最初のものにリセットします。

損失がyuu(預金の通貨で)に達した場合、アドバイザーはすべての取引を閉じ 開始1 にロットをリセット します。

アドバイザーの電源を一度切ってから入れ直すと- シグナルがあれば、開始ロットで注文を出す。

だろう?

 
законопослушный гражданин:

シグナルがあれば、スタートロットで注文を開始します。

注文が利益で終了した場合、新しいシグナルを待ちます。

注文が損失で終了した場合、ロットを増やして新たなシグナルを待ちます。

利益がxxxx(入金通貨)に達した場合、アドバイザーはすべての取引を終了し、ロットを最初のものにリセットします。

損失がyuu(預金の通貨で)に達した場合、アドバイザーはすべての取引を閉じ 開始1 にロットをリセット します。

アドバイザーの電源を一度切ってから入れ直すと- シグナルがあれば、開始ロットで注文を出す。

このように?

そう、このように。

EAを一度無効にし、再度有効にした場合、未決済の注文が ある場合はどうなりますか?

 
MakarFX:

はい、そうです。

EAをオフにしてからオンに戻すと、未決済注文が ある場合はどうなりますか?

EAをオフにする場合、オフにする前に、利益が出ているか損失が出ているかにかかわらず、すべてのオープンオーダーをクローズします。

再びフクロウの電源を入れると、スタートロットである「空白のフィールド」が閉じられます。

開くための信号を与える指標は、例では、RSIだったが、私は別の指標に3つの異なるフクロウをテストすることを想定しています。

そこで、上記のロジックのサンプルコードがあれば、他のEAのコードを自分で手直しすることができるようになると思います。

 
законопослушный гражданин:

フクロウがオフにさ れた場合、オフにされる前に、利益または損失に関係なく、すべてのオープンオーダーをクローズします。

オープンのシグナルを出すインジケータはRSIでしたが、クリアされたものと思われます。

開くための信号を与える指標は、例では、RSIだったが、私は別の指標に3つの異なるフクロウをテストすることを想定しています。

なので、上記のロジックのコード例があれば、他のEAのコードを自分で手直しできるようになるので、オープンソースで無料公開されるといいなぁと思います。

とか、owl.turns off when changing timeframeとか、通信障害とか、100500とか、もう一つ理由があるのですが・・・。

EAがリロードするのは自然の摂理です。