OrderSend()関数のバグ? - ページ 2

 
hoz:


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

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

図面を見ると、ドローバーはフラットにあるのに対して、リバーサルではキャッチできないことが分かります
 
borilunad:

ビクターは、インジケータとそれをEAで使用する方法を勉強する必要があります。なぜなら、実行方法がわからないものを求めているように見えるからです。

研究していたんですね。単純に、始値や終値で 描かれたチャートよりも低い(高い)価格に設定してほしい、とか、そんなことはどうでもいいんです。インデックス1のバーを取れば、すでに形成されているので、それ以上値は変化しないので、違いはないのですが...。イ ンジケータが再描画されないのであれば、どのように描画されても問題ありません(計算方法は注意していたので理解していますし、単純なことですが)。結局のところ、以前のバーでのその価値はすでにあり、それを手に入れることができる、私はそうしました。

borilunad:

そしてもうひとつ、非常に厳しい条件に「こだわって」しまうと、半数のケースで価格が思い通りに動かなくなるのは確かだからです。だから、最悪の場合どうするかという選択肢を実行する必要があるのです。

ボリス 現実の市場では、さまざまな選択肢があり、必ずしも条件が満たされるとは限らないということを......。はい。それはわかります。でも、テスターで条件を満たさないと、全然おかしいんですよ。テスターでは、リクオートがなく、トレードフローの忙しさに関連したエラーもない。論 理的には、すべての注文が完璧に実行されるはずです。

テスターでは、すべての注文が完璧に動作すれば、そのストラテジーがどのように動作するのが理想的なのか、すでに考えることができるのです。そして、その統計に基づき適切な判断を下す。

しかし、Strategy Testerでもストラテジーを実行できず、すべてのステップであからさまに嘘をつくとしたら、どうでしょう。このプラットフォームから逃げて、振り返るなと?他の方法を探す?

私は本当に賢明なボットを書きたい、私は私のアプローチと観察に満ちている、私自身の戦略を持っています。すでに何かが書かれ、何かが実際にテストされ、何かがテスターで実行され、そしてすべてがうまくいっているのです。ワンドを基準にEAを書くことがほとんどでしたが、エントリーはワンドを基準にしていません。

ワンドのリーディングをインプットとし、生まれ変わることにしました。安定したエントリーができない、スキップされる、どこかで間違った価格でエントリーされている。コンピュータには一定の数値の系列があり、それがきちんと機能しなければならないので、指標を信用してはいけないというのは適切ではないと思うのです。

私はすでにすべてを正当化し、ついでにsysopに質問を送りました。今のところ、わかりやすい回答はありません...

borilunad:

正直なところ、なぜこのバーに入ることが重要で、他のバーには入らないのか、いまだに理解できない。私の考えでは、特定のエントリーポイントではなく、時間的に始まっているトレンドを見極めて利用することがメインだと思います。試してみて、異なるMashkasを比較し、その後、不要なエントリのフィルタとして、しばしば失敗し、他の指標は優れていないエントリのための信号としてではなく、それらを使用することを学びます

ボリス そう考えると、どこでエントリーしてもいいんですね :)どこかにエントリーしてトラブって自発的にもダメ。私の答えは簡単です。一定の条件があります。もし、今のローソク足で何かが実現しなかったのなら、他の人に取引させればいい...私は待つよ...。トレンドを追いかけるのではなく、追いかける。某歴史作品のグラももう書かないよ。

H1 TFでも 戦略通りのエントリーができるとは限らないということであれば、それより低いTFでは どうなのか?結局、H1は1分でも5分でも ないんです。TF H1では、Expert Advisorが「考える」時間が十分にあり、特にテスターでは ...だから、これは関係ないんです。

 
borilunad:
マシュカがバーにくっつくのは平地だけで、スプレッドでは釣れないことを頭に入れておいてください

どうでもいいことですが :)私のエントリーは違いますよ。これはほんのちょっとしたコツで、これからマスターしていかなければなりません。さらにその先には、もっと複雑なことが待っています。
 
hoz:

気にしないでください :)私の入口が変わります。使いこなすには、ほんのちょっとしたコツが必要です。さらに進むと、もっと複雑になります。
そして、最も重要なことは、あなたが永続性を持っているということです。真実は、あなたはおそらく忍耐と柔軟性に欠けているということですが、時間内にあなたが望むものを得るでしょうがんばってください。
 
特に1時間足で始値を テストしてみるとか...。
 
YOUNGA:
始値、特にティックでテストしてみるとか...。
もちろん、ダニにもより良い!絵柄がもっともらしくなる。
 
borilunad:
そして、最も重要なのは、あなたが永続性を持っている、真実は、おそらく、十分な忍耐と柔軟性がありませんが、時間をかけて、あなたがやろうとしたことを達成することができますがんばってください。


ありがとうございました。ちなみに、最近、知人...ブローカーから聞いた話です :)私がとても頑固で、過信していると。他に選択肢はない。始めたことをやり遂げなければ、何も始まらないのだ。

YOUNGA:
始値をテストできますか、特に時間足で...


どこかで余分なpipが「食われている」ように見えたりして。インデントを15に増やしたところ、設定されていないところにすべて設定されるようになった。どこもかしこもインデントが少ないと...。

こんな感じです。Expert Advisorのテスト 時に、ある条件を満たした場合にブレークポイントを表示させる方法を考えなければなりません。.注文が送信されたときやエラーが発生したとき、つまりどこかに送信されなかったときはすでにやっているのですが、自分が思っていたところに注文が開かれなかった瞬間を「キャッチ」するには、どんな条件を設定すればいいのか・・・それがもう面白いんです。もちろん、時間によって行うこともありますが、それはベストな選択ではありません。

 

static datetime lastBarTime = 0; // 最終計算時間

この行を削除し、対応する宣言をグローバルセクションに追加してください。

その後、できれば前と同じ順序でTFスイッチのシリーズを繰り返すとよいでしょう。

はい、また、initで追加:lastBarTime = 0。

 
bool OpenSell()
{
   int ticket = -1;
   double OOP = fastMa - SellHear * pt;               // Получаем значение цны открытия
   
   if ((Bid - ND(OOP)) >= g_stopLevel)                // Проверка цену открытия на стоплевел
   {
       if (ND(OOP) < Bid)           // Проверка что цена открытия ниже Bid, т.к. у нас вход отложенником
       {
           Print("Bid = ", Bid);
           Print("Ask = ", Ask);
           Print("fastMa = ", fastMa);
           Print("Цена покупки = ", fastMa + buyHear * pt);
           Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
           ticket = OrderSend(Symbol(), OP_SELLSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);
       }
   }
   if (ticket < 0)  <------ это как понимать? если ордер не установлен, то вернуть true, в функции bool OpenBuy() почему-то наиборот, где правильно????
   {
       return (true);
   }
   else
    
   Alert (GetLastError());
}
int GetStateMa(double fastMa, double slowMa)
{
   if (fastMa > slowMa)                          // Если условия выполнены, то..
       return (MA_DIRECT_TO_UP); <--здесь вверх  // ..машки направлены вниз <-- а здесь
   
   if (fastMa < slowMa)                          // Если условия выполнены, то..
       return (MA_DIRECT_TO_DOWN);  <---         // машки направлены вверх  <---
   if (fastMa = slowMa)
       return (MA_DIRECT_TO_NONE);              // Машки не имеют выраженного направления
}
и вообще весь код какой-то "Олбанский"
 
pako:
アルバニア語は禁句ではありません:)