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

 
Andrey Barinov:

このようにコンパイルします。


ありがとうございます。12個のコンパイルエラーを修正すれば、動作中のmql4コードがmql5インジケータに なると甘く考えていました)

一日の最大、最小を表示したくないのです。ゴールまでの距離は?

 
bij:

ありがとうございます。12個のコンパイルエラーを修正すれば、動作中のmql4コードがmql5インジケータに 変わると甘く考えていました)

最低でも1日は表示させたくない。ゴールまでの距離は?

どうだろう :)

OnCalculate の最初に ArraySetAsSeries を使ってバッファの配列を展開してみる。

 
bij:

ありがとうございます。12個のコンパイルエラーを修正すれば、動作中のmql4コードがmql5インジケータに 変わると甘く考えていました)

一日の最大、最小を表示したくないのです。ターゲットとの距離は?

その日の高値と安値を表示するだけで、これだけ膨大なコード行があるのですか?
 
Alexey Viktorov:
その日の高値と安値を表示するだけで、こんなに膨大なコード行数なんですね。
そうですね、その日の終値もありますが、前日だけでなく履歴に残ります。そこが難しいところです。
 
bij:
はい、また、その日の締めですが、前日だけでなく、履歴に残ります。そこが厄介なところです。

これはあなたのコードですか?それとも、オーダーメイドで書かれたのでしょうか?

MT4での見え方のスナップショットを見せてもらえますか?

 
Alexey Viktorov:

これはあなたのコードですか?それとも、オーダーメイドで書かれたのでしょうか?

MT4での見え方のスナップショットを見せてもらえますか?

指標はネットから。MT4が手元にないので、言葉でお伝えします。その日の高値、安値、終値ごとに、開始から終了までの行を表示します。しかし、当日の終値に 線を引くのではなく、21:00のバーの終値に線を引きたいのです

本当に工夫より簡単にできるのかもしれませんね。

 

4つのポジションを一度に決済しているのですが、損切り機能で1つずつカウントするにはどうしたらよいですか?

スリッページのため、同じ価格ではなく、時間も異なる可能性があります。

試してみてください。

int CountLOS()
  {
  double priceold=0;
  datetime datold;
   int count=0;
   for(int trade=OrdersHistoryTotal()-1;trade>=0; trade--)
     {
      OrderSelect(trade,SELECT_BY_POS,MODE_HISTORY);
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            if(OrderMagicNumber()==_MagicNumber)
              {
               if(OrderProfit()<=0&&datold !=OrderCloseTime()) {count++; datold =OrderCloseTime();}
               //if(OrderProfit()<=0&&priceold !=OrderClosePrice()) {count++; priceold =OrderClosePrice();}
               else  break;
              }
           }
        }
     }
   return(count);
  }
 
lil_lil:

4つのポジションを一度に決済しているのですが、損切り機能で1つずつカウントするにはどうしたらよいですか?

スリッページにより、同じ価格で決済されない場合があり、タイミングが異なる場合がある

スリッページのため価格も時間も異なり、一方は秒の終わりでクローズし、もう一方は次の秒の始まりでクローズしています。引け際の注文テロップを 記録するようにする。ファイルに記録することができる...

 
lil_lil:

4つのポジションを一度に決済しているのですが、損切り機能で1つずつカウントするにはどうしたらよいですか?

スリッページのため、同じ価格ではなく、時間も異なる可能性があります。

トライアルです。

最後に閉じたものを循環させています。最後に閉じたものがマイナスなら、120秒(2分)の間に閉じたものをすべて見て、合計の利益を計算します。

 
lil_lil:

4つのポジションを一度に決済しているのですが、損切り機能で1つずつカウントするにはどうしたらよいですか?

スリッページのため、同じ価格ではなく、時間も異なる可能性があります。

試してみました。

こんな感じ。

 datetime _oct=0,time=0,_pt=0;
 int _cnt=0;
  for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
    if(OrderSymbol()==symb && OrderMagicNumber()==mg) {
     int OrdersType=OrderType();
     // BUY && SELL
     if(OrdersType<=1) {
       CopyTime(OrderSymbol(),PERIOD_D1,0,1,itime);
       if((OrderCloseTime()>=itime[0] && OrderCloseTime()<itime[0]+86400)) {
         _Get.Hist.BS._ProfitDaily+=OrderProfit()+OrderCommission()+OrderSwap(); // Profit за сегодня
       }
       // 120 секунд разницы между закрытием первой и последней в сетке
       _oct=OrderCloseTime();
       if(_cnt==0 && _oct!=0) time=_oct;
        if(_oct+120>=time) {
          _Get.Hist.BS._ProfitOldClose+=OrderProfit()+OrderSwap()+OrderCommission(); // Profit последнего трейда
          _cnt++;
        }
     }
  }}}