bool CheckForCloseBULL4()
{
int i;
for(i=OrdersTotal()-1;i>=0;i--)
if( ! OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ) continue;
if( OrderMagicNumber() == MAGICMA1 && OrderSymbol() == Symbol() && OrderType() == OP_BUY )
if(OrderOpenPrice()+8*MyPips < Ask) return(true);
elsereturn(false); // <-- the else here is wrong. Use {} if you are unsure what is processed where
}
int OpenOrders_BULL4(string symbol)
{
int buys=0;
for(int i=0;i<OrdersTotal();i++) // <-- do it like you do it in the other loops!
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; // <-- break? Why not using always the same code for the same thing?
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA1) // Look at the for loop you used in CheckForCloseBULL4().
{
if(OrderType()==OP_BUY) buys++; // <-- why this additional if? Simplify it to:
} // if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA1 && OrderType()==OP_BUY) buys++;
}
return(buys);
}
void start()
{
bool SignalBULL41Executed; //<-- if defined inside the start function, the flags get reset with every tick.bool SignalBULL42Executed; // define it outside in global scope.if(Fun_New_Bar()==true)
{
SignalBULL41Executed=false;
SignalBULL42Executed=false;
}
if(BULL4() && BULL41send() && !SignalBULL41Executed && OpenOrders_BULL4(Symbol())==0)
{
OpenBULL41();//do open buy position //<-- As far as I remember, you defined this as bool. Do only set the flag, if the function returns true.
SignalBULL41Executed=true; // change to: if(OpenBULL41())SignalBULL41Executed=true;
}
質問1.これらの関数でMyPipsをキャンドルで使用しなければならないのでしょうか? bool BULL4()
はい、しかし、BULL4()関数の if文は正しいですか?つまり、計算しているそのローソクを探しているのでしょうか?
そして、私は自分用のプログラムを書いたのですが、あなたはどうですか?
それはあなたのものです、だからそれはあなたのために良いものでなければなりません、私の形ではありません。
いくつかのコメント。
ラストエ ラーの修正
2番目の買いを追加
を追加しました。
OpenとCheckForClose、CloseはBULL41と同じコード(pipsのみ異なる)。
開始関数はこのような感じです。
そして今、私はフラグ、リセットシグナル、そして開始関数を変更する必要があります。
私の想像では
新しいバー。
そして、開始は次のようになります。
コードは動作していますが、多分私はいくつかのエラーを持っている
ResetSignals()がないため、うまく動作しない。
私は最後のエラーを修正します。
...
...
...
コードは動作していますが、おそらくいくつかのエラーがあります
私は、それが素敵な形式ではなかったので、CheckForCloseBULL41()関数の 他の人が間違っている、とは言わなかった。あなたは何も変えていません。もし、複数のオープンオーダーが以下にマッチする場合、ループがすべてのオーダーを通過しないため、問題が発生します。
すでに開いている注文の特定の数だけ新しい注文を開く限り、シグナルフラグは必要ありません。これはまた、コードがより多くの注文を開くことを防ぐことができます。
Fun_New_Bar() 関数が正しくありません。
1.その他の問題
もしこれが正しくないなら、もう一度検索してみます。
2.新しいバーの問題
3.リセット信号の 問題
2.と3.が ダメだったら、どう したらいいのか分からないので、 できれば最大の指示を 仰ぎたいと 思います。
1. else 問題
修正済み
2.New Bar 問題
修正済み
3.リセット信号の 問題
上記の修正は、フラグに関するものです。しかし、未解決の問題は、それが必要なのかどうかということです。新しい注文を出すだけで、特定の数の注文が すでに出ている場合は、おそらく必要ないでしょう。黄色いマークの表現はそういう意味です。しかし、心配はいりません。これは、フラグに対しても有効であり、後で、それらが時代遅れであることが判明したときに、それらを排除することができます。
フラグは 必要 ないと思いますが、いつかは 役に立つと 思います。
つのEAを1つの EAで持つには?
EA BULL 4のコピーを作り 、 BULL6の idexと スペーシング pipsを 変更しました。
EABull4 + EA Bull6 あまりに新しいEAをコピー する( 数字 ( )以降全て )。 関数 start()とmagicma2 内の 変更を 行う...
私の EAは非常によく動作し、シナリオは お互いに 干渉 しません。私は幸せ です。
私は あなたの助けのために あなたに感謝 したかった、 あなたの助け 、特に あなたの サポートクロニン なしで 私は それを 書くことはないだろ う。
私の中では、主題は終わりです。
課題
私の EAは、シナリオが 互いに 干渉 することなく、非常にうまく動作して います。私は幸せ です。
私は あなたの助けに 感謝 したかった、 あなたの助け 、特に あなたのサポート Kroninが なければ、私は それを 書く ことはありません。
どういたしまして。嬉しいフィードバックをありがとうございます。