OrderSend()関数のバグ?

 

4日前から悩んでいるのですが、一見簡単そうなことが実行できないのです。以前、別のインジケーターやローソク足で似たようなことをやったことがあります。腕時計では無理です。

エッセンスはプリミティブに!価格がi_thresholdFromMa(このEAでは1つだけ!)から一定の距離で一定期間のマスクに近づくとすぐに、ペンデンティブが設定されます。これまで使えていた機能やフィルターをすべて削除済みです。

ここでは、Buy機能について説明します。

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = fastMa + buyHear * pt;             // Получаем значение цны открытия
   
   if ((ND(OOP) - Ask) >= g_stopLevel)             // Проверка цену открытия на стоплевел          
   {
       if (ND(OOP) > Ask)           // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником
       {
           Print("Bid = ", Bid);
           Print("Ask = ", Ask);
           Print("fastMa = ", fastMa);
           Print("Цена покупки = ", fastMa + buyHear * pt);
           Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
           ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);
       }
   }
   if (ticket > 0)
   {
       return (true);
   }
   else
    
   Alert (GetLastError());
}

OrderSend()の始値は、変数fastMa + buyHear * ptの 合計に等しいことがわかります。

スクリーンショットでは、そのような価格は存在しないことがわかります。

ジョイントはマシュカにあり

また、fastMa(赤いマーカー)にタッチしているエントリーはないことがわかります。

ペナルティバーがすでに閉じていて、もう閉じることはないだろうと確信するために、わざと1番目のバッファ、つまりペナルティバーを取ったのです...。最後の0小節目が録り直しになるのを避けたかったのです。

それが注文のメッセージなんですね。

ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);

ITはOOPです。

double OOP = fastMa + buyHear * pt;             // Получаем значение цны открытия
なぜ、そんなことが可能なのか?
ファイル:
test_ma_1.mq4  9 kb
 
hoz:

4日前から悩んでいるのですが、一見簡単そうなことが実行できないのです。以前、別のインジケーターやローソク足で似たようなことをやったことがあります。腕時計では無理です。

エッセンスはプリミティブに!価格がi_thresholdFromMa(このEAでは1つだけ!)から一定の距離で一定期間のマスクに近づくとすぐに、ペンデンティブが設定されます。これまで使えていた機能やフィルターをすべて削除済みです。

ここでは、Buy機能について説明します。

OrderSend()の始値は、変数fastMa + buyHear * ptの 合計に等しいことがわかります。

スクリーンショットでは、そのような価格はないことが確認できます。

また、fastMa(赤いマーカー)にタッチしているエントリーはないことがわかります。

ペナルティバーがすでに閉じていて、もう閉じることはないだろうと確信するために、わざと1番目のバッファ、つまりペナルティバーを取ったのです...。最後のゼロ小節が再録されないようにしたい。

そこで、注文の メッセージを紹介します。

A OOPです。

なぜ、そんなことが可能なのか?

まだログを持ち込まないつもりですか?
 
Vinin:

まだログを渡さないつもりですか?


以下は、ログの内容です。

2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: open #3 buy stop 0.10 EURUSD at 1.31074 ok
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: i_thresholdFromMa * pt = 0.0005
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: Цена покупки = 1.3107
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: fastMa = 1.3097
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: Ask = 1.3099
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: Bid = 1.3099
2013.02.06 17:54:05     2011.01.12 14:32  Tester: order #2, buy 0.10 EURUSD is opened at 1.29876
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: open #2 buy stop 0.10 EURUSD at 1.29876 ok
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: i_thresholdFromMa * pt = 0.0005
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: Цена покупки = 1.2988
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: fastMa = 1.2978
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: Ask = 1.2978
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: Bid = 1.2978
2013.02.06 17:54:05     2011.01.12 12:11  Tester: order #1, buy 0.10 EURUSD is opened at 1.29953
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: open #1 buy stop 0.10 EURUSD at 1.29953 ok
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: i_thresholdFromMa * pt = 0.0005
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: Цена покупки = 1.2995
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: fastMa = 1.2985
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: Ask = 1.2987
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: Bid = 1.2986
2013.02.06 17:54:04     test_Ma_1 inputs: i_TF=0; i_fastMaPeriod=10; i_magic=3333021; i_thresholdFromMa=5; buyHear=10; SellHear=10; 

つまり、過去ログを信じれば、購入はあるべきところにあるのです。スクリーンショットを見ると、全然ないんですよね...。上のスクリーンショットは、保留中の注文が間違った場所にあることを示しています。fastMaの 10は全然足りない...。

 

ビクターさん、こんにちは。開いてくれるんだけど、漏れるんだよね。一行だけちょっといじると開く。

   if ((ND(OOP) - Ask) >= MathMax(g_stopLevel,g_spread))// Проверка цену открытия на стоплевел          
sallにも同じものを追加してくださいがんばってください。
 
borilunad:

ビクターさん、こんにちは。開いてくれるんだけど、漏れるんだよね。1行だけちょっといじると開くんです。

sallも同様に追加したいと思います!がんばってください。


こんにちは、ボリス。まあ、以前と同じ場所で開くんですけどね。開かなかったところは、今も開かず。H1では 非常に不思議な動きをします。

M15に 切り替え、0(ゼロ)バーでマスクをMODE_OPENに 設定しました。

一般的に観察すると、必要なところに(M15 TFのところという意味です)保留注文が置かれていますが、明らかに開くべきところに保留注文が置かれているわけではありません。以下は、その例としてのスクリーンショットです。

ポーズのあるジョイント

ボリルナド

ビクターさん、こんにちは。開いているけど、ムカつく。

ボリス、そしてそれは...まだ第一段階なのに...。ゴールまでの道のりは長い。すべての条件は後から、徐々に決めていくことになります。とりあえず、今のニュアンスで決着がついたというところでしょうか。
 
hoz:


ボリス さん、こんにちは。まあ、以前と同じ場所で開くんですけどね。開かなかったところは、今も開かず。H1では 非常に不思議な動きをします。

M15に 切り替え、0(ゼロ)バーで手首をMODE_OPENに 設定した。

一般的に観察すると、必要な場所(M15 TF上のことです)には保留注文が置かれますが、明らかに開くべき場所には保留注文が置かれません。例えば、こんな画面です。

ボリス、そして彼は...まだ第一段階なのに...。ゴールまでの道のりは長い。すべての条件は後から、徐々に決めていくことになります。とりあえず、現状のニュアンスを整理する必要がありますね。

ビクターは、EAにおける指標とその使用方法を検討する必要があります。どう実装したらいいかわからないものを求めているように思えます。

そしてもうひとつ、あまり厳しい条件にはこだわらないことです。なぜなら、価格が思い通りに動かないケースが半数以上あるからです。だから、最悪のケースを想定しておく必要があるんです。

正直なところ、なぜこのバーでエントリーして、もう一方のバーでエントリーしないことが重要なのか、私にはまだ理解できていません。私の考えでは、特定のエントリーポイントよりも、時間的に始まっているトレンドを見極めて利用することがメインだと思います。試しにいろいろなMashkeyを比較してみて、エントリーするためのシグナルではなく、不要なエントリーのフィルターとして使うことを学ぶと、しばしば失敗して、他のインジケータが良くなることはありません

 
i_thresholdFromMaの値とtを プロットしてテスターで観察してみると、比較の結果もそこにプロットされます
 
hoz:


以下は、ログの内容です。

つまり、過去ログを信じれば、購入はあるべきところにあるのです。スクリーンショットを見ると、全然ないんですよね...。上にスクリーンショットをあげましたが、保留中の注文が間違った場所にあるのがわかると思います。fastMaの 10は今ひとつ...。


ログから判断すると、OrderSend()関数は、あなたが渡した価格で、正しく注文を配置しています。
 

パパヨシュ



ログから判断すると、OrderSend()関数は、あなたが渡した価格で、正しく注文を配置しています。

やったーーーー!!!!(笑

fastMaの10は今ひとつ...。

100pipsのセットをお持ちの方。

スクリーンショットをもっと見る、正しいです。

 
r772ra:

やったーーーー!!!!(笑

fastMaの10は今ひとつ...。

100Pが設定されていますね。

別のスクリーンショット、以上です。


4桁の相対値で10ppです。そして、5桁では100ppです。何がいけないんですか?
 
PapaYozh:

ログから判断すると、OrderSend()関数は、あなたが渡した価格で、正しく注文を配置しています。


ログから判断すると、正しいです。しかし、同じ設定でテスターを使おうとすると、定期的に正しく発注されないという、すでに述べたような...。そう書きました。ログを読んだが、すべてがうまくいっている......。スクリーンショットを見ると...(チャートを見ると、買いエントリーより低い位置にあることに気づく...これは条件に反している。

しかし、M5では気がつかなかったが、BUT、一部のエントリーが欠落していることが気がついたというのも不思議な話だ。

理由: