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

 
MakarFX:

読み取ったデータを使って、インジケータのロジックを構築します。

いや、そういうわけにもいかないんです。

ここで .1インジケータは常に2147483647という数字を表示しています。信号を受信するとすぐに、バッファの1つに別の数字が表示されます。これは、私が考えたことです。

しかし、2つ目のインジケータは常に2つのバッファで同時に 0か2147483647の どちらかを表示する

ファイル:
 
わかったような気がします。こんな感じになるはずです
  
     if (in1b<2147483647 && in2b>0 && in2b<2147483647)
           Sell[i]=low[i];
     if (in1s<2147483647 && in2s>0 && in2s<2147483647)
            Buy[i]=high[i];
 
jarikn:
わかったような気がします。このようになるはずです。

この場合、特に指定は必要ありません。つまり、>0 の場合だけです。

 
MakarFX:

この場合,具体的な説明は不要で,単に >0 ならば

が、信号がないときのバッファはどうなっているのだろう。

ファイル:
 
jarikn:

しかし、無信号時のバッファの中身は以下の通りです。 ここで >0 が機能するとは思えませんが、今試してみます。

シグナルがない場合、最初のインジケータの値はEMPTY_VALUEに なります。

好い線行く

   if(iCustom(NULL,0,"in1",1,i)>0&&iCustom(NULL,0,"in1",1,i)<Bid*2&&iCustom(NULL,0,"in2",0,i)>0) // индикатор стрелка вниз

   if(iCustom(NULL,0,"in1",0,i)>0&&iCustom(NULL,0,"in1",0,i)<Bid*2&&iCustom(NULL,0,"in2",1,i)>0) // индикатор стрелка вверх
 

テスターでこの問題を解決するため、ご協力をお願いします。CME EUR/USD 先物のポジションオープンを テストしています。

テスターで相場の上昇時に、私はブレイクダウンでロングポジションをストップで建て、そのトレードはチケット#2を取得します。相場が上昇し、次のポジションがストップで開かれ、その取引はテスターのチケット#3を取得します。

相場が#3のポジションに逆行し、ストップに到達したとき、理想的には#3はストップで決済し、#2はそこにとどまり、価格が#2に到達するのを待ちます。しかし、なぜかストップ#3がトリガーされると、テスターはポジション#2も閉じてしまうのです。

mql5 のコードは

MqlTradeRequest request={};
MqlTradeResult  result={};
                                 
request.action = TRADE_ACTION_DEAL; //Вход рынку
request.symbol = Symbol();
request.volume = 1.0; //Кол-во фьючей
request.type   = ORDER_TYPE_BUY; //Купить
request.price  = SymbolInfoDouble(Symbol(),SYMBOL_ASK);   
request.sl     = NormalizeDouble(sl,5); // Стоп

bool check     = OrderSend(request,result);


 
NastyaMaley:

テスターでこの問題を解決するため、ご協力をお願いします。CME EUR/USD 先物のポジションオープンを テストしています。

テスターの相場の上昇で、私はブレイクアウトでロングポジションをストップで建て、そのトレードは2番になりました。相場が上昇し、次のポジションをストップで建てた場合、その取引はテスターで3番を取得します。

相場が#3のポジションに逆行し、ストップに到達したら、#3はストップで決済し、#2はそのままストップ#2に価格が到達するのを待つという考え方です。しかし、なぜかストップ#3がトリガーされると、テスターはポジション#2も閉じてしまうのです。

mql 5のコードは


mql5を 知らないのですが、閉じる順番を選べるところがないような気がします
 
MakarFX:

信号がない場合、最初のインジケータはEMPTY_VALUEと なります。

は、次のようにします。

はい、その通りです。以上です、ありがとうございました。

 

テスターの行動の理由が明らかになった気がします。ロボットがテストしているデモ口座の種類はNettingです。したがって、ポジション#3をオープンする 際に指定したストップが発動されれば、そのポジションの全量をクローズすることになります。そのため、3番からのストップでは、2番も閉じてしまう。たとえ、オープン時に2番には別のストップが設定されていたとしても。

ヘッジ口座タイプでは、すべてが古き良きmql4のように動作します。

 
NastyaMaley:

テスターでこの問題を解決するため、ご協力をお願いします。EUR/USD 先物でCME ポジションオープンを テストしています。

テスターで相場の上昇時に、私はブレイクダウンでロングポジションをストップで建て、そのトレードはチケット#2を取得します。相場が上昇し、次のポジションがストップで開かれ、その取引はテスターのチケット#3を取得します。

相場が#3のポジションに逆行し、ストップに到達したとき、理想的には#3はストップで決済し、#2はそこにとどまり、価格が#2に到達するのを待ちます。しかし、なぜかストップ#3がトリガーされると、テスターはポジション#2も閉じてしまうのです。

mql5の コードは以下の通りです。

ストップを使うべきではありません。ストップを使う代わりに、逆方向の注文を保留する必要があります。