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

 

私の質問が理解されていなかったのかもしれません。

M1期間のチャートで、M5期間の「ストキャスティクス」指標の線 が55レベルを超えていたら、バッファを埋めたいと思います。

input ENUM_TIMEFRAMES   TimeFrame2  =  PERIOD_M5; //ЭТО ВО ВНЕШНИХ Н
////////////////////////////////////////////////
       for(int i=limit; i>=0; i--) {
      int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
      int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
    
      double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
      double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
    
      if(sto2_0>55.0)
       {
      BufferUP[i]=low[i]-distance*MyPoint;
       }
      
      if(sto2_0<44.0)
       {
      BufferDN[i]=high[i]+distance*MyPoint;
       }

      Comment(sto2_0);
       }

コメントではM5で現在値が正しいのですが、履歴上では矢印が条件に入っておらず、カオスになっています。

それは何でしょう?

地下室」では、M5からのストキャスティック

矢印は、信号に従っていない丸で囲まれている



ザオック
 

売りと買いの2つのStopOrderを同時に配置するExpert Advisorを作成しています。

一方のStopOrderがトリガーされると、もう一方の(反対側の)StopOrderが削除されるという条件はどのように書けばよいのでしょうか?

ありがとうございます。

 
RichLux:

売りと買いの2つのStopOrderを同時に配置するExpert Advisorを作成しています。

一方のStopOrderがトリガーされると、もう一方の(反対側の)StopOrderが削除されるという条件はどのように書けばよいのでしょうか?

ありがとうございます。

条件は簡単です。StopOrderがトリガーされると、マーケットにポジションが出現するので、そのポジションを追跡し、存在すれば反対側の注文を削除する必要があるということです。

これは思考のためのコードの一部です)

void DeleteOppositeOrders(string sy="", int op=-1, int mn=-1, color cl=clrOliveDrab) {
  bool b, s;
  switch(op) {
    case OP_BUY : b=ExistPositions(sy, OP_BUY , mn); break;
    case OP_SELL: s=ExistPositions(sy, OP_SELL, mn); break;
  }

  if(b) {
    DeleteOrders(sy, OP_SELLLIMIT, mn, cl);
    DeleteOrders(sy, OP_SELLSTOP , mn, cl);
  }
  if(s) {
    DeleteOrders(sy, OP_BUYLIMIT, mn, cl);
    DeleteOrders(sy, OP_BUYSTOP , mn, cl);
}}
 
Vitaly Muzichenko, 私の理解では、ExistPositions とDeleteOrders 関数を追加する必要があるようです。
 
RichLux:
Vitaly Muzichenko, 私の理解では、ExistPositionsとDeleteOrdersの 関数を追加する必要があるようです。
はい、そうですね。
 
RichLux:
Vitaly Muzichenko, 私の理解では、ExistPositionsとDeleteOrdersの 関数を書く必要があるようです。
書かなくても、どちらも既成の ものです
 
Vitaly Muzichenko:
書かなくても、どちらも既成の ものです。

まあ......、教育目的ならかなり使えるんですけどね......。

実用上、各機能でサイクルを回すのは非常にコストがかかります。

 
Artyom Trishkin:

まあ......、トレーニング用としては非常に便利なんですけどね......。

実用上、すべての機能でサイクルを回すのは非常にコストがかかる。

したがって、私は一度に添付せず、「反対側の閉鎖」の論理だけを記述して添付しました )
 

ストップ/ストップが200の場合の対処法

けど

tp=NormalizeDouble((価格+(TakeProfit*_Point)),Digits)となります。

ドル円の場合、為替レート117.000で317.000円になります

期待される結果は117.200

 
trader781:

ストップ/ストップが200の場合の対処法

けど

tp=NormalizeDouble((価格+(TakeProfit*_Point)),Digits)となります。

ドル円の場合、為替レート117.000で317.000円になります

期待される結果は117.200

なぜ、こんなにたくさんのブラケットがあるのですか?もちろん好みの問題だが、それでもやりすぎだ。

tp=NormalizeDouble(price+TakeProfit*_Point,_Digits)。

出力結果が不正確な場合、値は正しく代入されます。このコードの行は、余分な括弧があってもすべてを正しく計算するためです。