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

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

というのは、このコードの著者は、次のように提案しています。

フクロウがストップ&テイクで買い取引を開始したら、彼のコードは買い取引の 代わりにストップ&テイクで同じ時間に同じ 場所で(スプレッドを考慮して)売り取引を開始します。

このように、EAのエントリーポイント探しのロジックは変わらず、スプレッドが考慮された方向のみが変化します。

これこそ私が必要としているものだ

すべてのトレードを逆にしたい場合は、スワップするだけです。

vOrderOpenSellおよび vOrderOpenBuy


//+-----------------------------------------------------------------------------------------------+
void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0, iPeriodMA, 0, MODE_SMA, PRICE_CLOSE, 0);

// Если нет открытых ордеров, то входим в условие
   if(bCheckOrders() == true)
     {
      // Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenSell();

      // Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenBuy();
     }
  }
 
SGarnov:

最初の結果です。 通貨ペア間の競合があり、EAは保留中の注文の 配置で競合しています。 例えば、私はEURUSDの保留中の注文を置き、EAはアルゴリズムに従っています(1.18901で買い、取引開始、1.18751でストップ設定、1.19051で利食い、1.18751で売り注文)すべては計画通りに大丈夫です。

しかし、今度は価格が異なるGBPUSDで取引を開始するときです。EAは、保留中の注文を設定することを除いて、すべて正しく動作しています。1.39393の売り注文がトリガーされ、EAはそれを開き、1.39633にストップを設定し、1.39153を取ろうとしたが、1.3963の買い注文はEURUSDで完全に重複し、1.18751の売り注文がある)

EURUSDのオープントレードで、1.18751にストップ、1.18901に売り保留、1.18595に取るとトリガーされたことです。Expert Advisorは、履歴にあるトリガーされたストップを追加しませんでした。

これらが問題なのです。

注文に間違いがあったので、追加で作業しているところです

 
MakarFX:

すべてのトレードをリバースする必要がある場合は、ここでスワップするだけです。

vOrderOpenSellおよび vOrderOpenBuy


いや、リバーサルではなく、スプレッドを考慮しながら損切りのトレードを別の端末に「ミラーリング」することが必要なのです。

テスターはそのような可能性を与えてくれません。テスターのフクロウが、あたかも別のターミナルで開いたかのようなスプレッドでトレードを「ミラー」する必要がありますが、このフクロウのロジックによれば、例えばリワーダーのコピー機を介して行うことができます。

TSのテストに必要

 
Alexey Viktorov:

MakarはOrderMagicNumber()を正しく指摘したが、エラーを誤解していた。この関数の構文についてはドキュメントを読んでください。オーダーリストのインデックスか、特定のオーダーのチケットの どちらかになるはずですが、マジコンではありません。また、OrderTicket()はここでは役に立ちません。そこに置こうとしないでください。

理にかなっている。コンパイルしてOrdersHistoryTotalに置き換え、端末の 設定で過去3日分の履歴を作りました。テストしてみます。

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

逆張りではなく、コードの作者のお題のように、スプレッドを考慮した損切りトレードを別の端末に「ミラーリング」して欲しいです。

テスターはそのような可能性を提供しません。そのため、テスターのフクロウが必要で、スプレッド付きの取引を「ミラー」し、あたかも別のターミナルで開いたように、しかしこのフクロウのロジックに従って、例えばリウェイト付きのコピー機を通して、取引を行うことが必要です。

TSを確認するために必要です

マーケットエントリー注文に問題がある場合、これを置き換えてみてください。

///////////////
if (cmd==OP_SELL) // Переворачиваем ордера OP_SELL
{
Ret=OrderSend (symbol,OP_BUY,volume,Ask,slippage,takeprofit-sprd,stoploss-sprd,comment,magic,expiration,arrow_color);
}
if (cmd==OP_BUY) // Переворачиваем ордера OP_BUY
{
Ret=OrderSend (symbol,OP_SELL,volume,Bid,slippage,takeprofit+sprd,stoploss+sprd,comment,magic,expiration,arrow_color);
}

また、すべてのオーダーに問題がある場合は、STOPLEVELを確認します。

 
MakarFX:

............................................................................................

実装が難しいという結論に達しました。あなたのコードはもっとシンプルで明確で論理的ですが、......なぜかどちらも追加されませんね。大切なのは、あきらめないことです。

 
SGarnov:

実装が難しいという結論に達しました。あなたのコードの方がずっとシンプルで明確で論理的ですが、......なんとなく腑に落ちませんね。大切なのは、あきらめないことです。

私はソビエト連邦に仕えている!
 
SGarnov:

実装が難しいという結論に達しました。あなたのコードの方がずっとシンプルで明確で論理的ですが、......なんとなく腑に落ちませんね。大切なのは、あきらめないことです。

MakarFX:
I serve Soviet Union!

トリガーストップの数も考慮した方がいいのかもしれませんね。例えば、EAは 履歴からストップを見つけ、2つあれば3つも4つも追加するはずですが、それはすべて外部設定「ストップロスの数」によります。

 
SGarnov:

ストップの発動回数も考慮したほうがいいかもしれませんね。例えば、EAは 履歴からストップを見つけ、2つあれば3つ、4つと追加していくはずですが、すべては外部設定「ストップロスの数」によって決まります。

トリガーされたストップの数の会計処理があり、「負け注文の数」が設定で指定した数より多い場合、保留中の注文はもう出せない(チェック済み)。
 

皆さんこんにちは、助けてください

こんな悩みがあるんです。私はmql5からvpcを 購入し、すべてが正常に動作している、エキスパートをインストールし、8チャートを設定し、エキスパートを置く。そして、全部をvpcに転送しました。

メタトレードは私のものではなかったので、パソコンからアンインストールしました。

そして今、パソコンから入るとき。

すべてがうまくいく、エキスパート。動作はするのですが、設定を変更するために見ることができません。EAやスケジュールをパソコンから管理できるように戻すにはどうしたらよいですか?

ありがとうございました。