if ( SignalBULL62Executed) CheckForClose_BULL6(); // I don't know it is the right place to close
いや、ここは確かに違うか。
int result;
if(Bid==Close[1]+3*Point)
{
result=OrderSend(Symbol(),OP_BUY,0.61,Ask,0,Close[1]-25*Point,0,"",MAGICMA2,0,Red);
return;
}
if (result == -1)
{
int e = GetLastError();
Print(e);
}
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+#define MAGICMA1 2000// blue starategy#define MAGICMA2 2001// red strategy//+------------------------------------------------------------------+//| Check NEW BAR |//+------------------------------------------------------------------+bool New_Bar = false;
bool Fun_New_Bar() // bool
{
staticdatetime New_Time=0;
New_Bar=false;
if(New_Time!=Time[0])
{
New_Time=Time[0];
New_Bar=true;
}
}
//+------------------------------------------------------------------+//| Calculate open positions HOW MEANY OF THIS is open |//+------------------------------------------------------------------+//--- FOR BLUE---------------------------------------------------------int OpenOrders_BULL4(string symbol)
{
int buys=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA1) // magic ma 1 ( is ==)
{
if(OrderType()==OP_BUY) buys++;
}
}
return(buys);
}
//--- FOR RED--------------------------------------------------------------int OpenOrders_BULL6(string symbol)
{
int buys=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA2) // magic ma 2 ( is ==)
{
if(OrderType()==OP_BUY) buys++;
}
}
return(buys);
}
//+------------------------------------------------------------------+//| Condition candle |//+------------------------------------------------------------------+bool BULL4()
{
if(Close[1]-Open[1]>=4*Point && Close[1]-Open[1]<=5*Point)
return(true);
}
bool BULL6()
{
if(Close[1]-Open[1]>=6*Point && Close[1]-Open[1]<=7*Point)
return(true);
}
//+------------------------------------------------------------------+//| Check for open order conditions |//+------------------------------------------------------------------+//--------------------------- blue bull4 magicma1 void OpenBULL41()
{
int result;
if(Bid==Close[1]+3*Point)
{
result=OrderSend(Symbol(),OP_BUY,0.41,Ask,0,Close[1]-25*Point,0,"",MAGICMA1,0,Blue);
return(true);
}
if (result == -1)
{
int e = GetLastError();
Print(e);
}
}
void OpenBULL42()
{
int result;
for(int i=1;i<=OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA1) // magic ma 1 ( is ==)
{
if(Ask>OrderOpenPrice()+2*Point)
{
result=OrderSend(Symbol(),OP_BUY,0.42,Ask,0,Close[1]-25*Point,0,"",MAGICMA1,0,Blue);
return;
}
if (result == -1)
{
int e = GetLastError();
Print(e);
}
}
}
}
//--------------------------- red bull6 magicma2 void OpenBULL61()
{
int result;
if(Bid==Close[1]+3*Point)
{
result=OrderSend(Symbol(),OP_BUY,0.61,Ask,0,Close[1]-25*Point,0,"",MAGICMA2,0,Red);
return;
}
if (result == -1)
{
int e = GetLastError();
Print(e);
}
}
void OpenBULL62()
{
int result;
if(Ask>OrderOpenPrice()+2*Point)
{
result=OrderSend(Symbol(),OP_BUY,0.62,Ask,0,Close[1]-25*Point,0,"",MAGICMA2,0,Red);
return;
}
if (result == -1)
{
int e = GetLastError();
Print(e);
}
}
void OpenBULL63()
{
int result;
if(Ask>OrderOpenPrice()+2*Point)
{
result=OrderSend(Symbol(),OP_BUY,0.63,Ask,0,Close[1]-25*Point,0,"",MAGICMA2,0,Red);
return;
}
if (result == -1)
{
int e = GetLastError();
Print(e);
}
}
//+------------------------------------------------------------------+//| Check for close order conditions |//+------------------------------------------------------------------+void CheckForClose_BULL4()
{
if(OrderOpenPrice()+4*Point< Ask)
for (int i = OrdersTotal()-1; i >= 0;i--) // add: -1
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MAGICMA1)
{
bool ticket = true;
if (OrderType() == OP_BUY) ticket = OrderClose(OrderTicket(),OrderLots(),Bid,1,Blue);
}
}
}
void CheckForClose_BULL6()
{
if(OrderOpenPrice()+8*Point< Ask)
for (int i = OrdersTotal()-1; i >= 0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MAGICMA2)
{
bool ticket = true;
if (OrderType() == OP_BUY) ticket = OrderClose(OrderTicket(),OrderLots(),Bid,1,Red);
}
}
}
//+------------------------------------------------------------------+//| flag |//+------------------------------------------------------------------+
Fun_New_Bar();
if (New_Bar==false);
bool SignalBULL41Executed=false;
bool SignalBULL42Executed=false;
bool SignalBULL61Executed=false;
bool SignalBULL62Executed=false;
bool SignalBULL63Executed=false;
if(Fun_New_Bar())
{
SignalBULL41Executed=true;
return(SignalBULL41Executed);
}
//+------------------------------------------------------------------+//| Start function |//+------------------------------------------------------------------+void start()
{
// ----------------bull4if(BULL4())
if(!SignalBULL41Executed && OpenOrders_BULL4(Symbol())==0)
{
OpenBULL41();//do open buy position
SignalBULL41Executed=true;
if ( SignalBULL41Executed) CheckForClose_BULL4(); // I don't know it is the right place to close
}
if(!SignalBULL42Executed && OpenOrders_BULL4(Symbol())==1)
{
OpenBULL42();//do open buy position
SignalBULL42Executed=true;
if ( SignalBULL42Executed) CheckForClose_BULL4(); // I don't know it is the right place to close
}
// ----------------bull6 if(BULL6())
if(!SignalBULL61Executed && OpenOrders_BULL6(Symbol())==0)
{
OpenBULL61();//do open buy position
SignalBULL61Executed=true;
if ( SignalBULL61Executed) CheckForClose_BULL6(); // I don't know it is the right place to close
}
if(!SignalBULL62Executed && OpenOrders_BULL6(Symbol())==1)
{
OpenBULL62();//do open buy position
SignalBULL62Executed=true;
if ( SignalBULL62Executed) CheckForClose_BULL6(); // I don't know it is the right place to close
}
if(!SignalBULL63Executed && OpenOrders_BULL6(Symbol())==2)
{
OpenBULL63();//do open buy position
SignalBULL42Executed=true;
if ( SignalBULL62Executed) CheckForClose_BULL6(); // I don't know it is the right place to close
}
}
//+------------------------------------------------------------------+
Fun_New_Bar();
if (New_Bar==false); // <-- ???bool SignalBULL41Executed=false; // <-- This could be correct, but I am not sure you know why and
bool SignalBULL42Executed=false; // its not more an accident that you initalize it here.
bool SignalBULL61Executed=false;
bool SignalBULL62Executed=false;
bool SignalBULL63Executed=false;
if(Fun_New_Bar()) // <-- Your Fun_New_Bar() function doesn't return anything,
{ // you set the global New_Bar variable with the function.
SignalBULL41Executed=true; // <-- You should set it to false on a new bar. return(SignalBULL41Executed); // <-- ???
}
ちょっとコードの制御ができなくなる予感が......。
いや、ここは確かに違うか。
この「エラー処理」では何も良くならない。もう一度確認してみてください。
これは楽しむために作られたものではありません!これは、新しいバーで実行されたフラグをリセットするために使用されるべきです。
倍数の比較について 何を学んだか、そしてこれがここで意味をなす かどうか?
だから、あなたは私が参照しているあなたの投稿を削除することを決定しました...よくやった、とても助かるよ !
申し訳ありませんが、昨日はインターネットに問題があった(mql4.com停止作業)。私は何かを修正しようとしていた...崩壊
なかなか難しいですね。とりあえず、1つのストラテジーだけで、ちゃんと、Open()、Close()、Count()、NewBar()、Signal()関数で 実装してみてはいかがでしょうか?
下のブロックは、start関数の外側にあります。これが必要なのかどうか、よくわかりません。
私はあなたと 同じだと思う 、 小さな一歩。 ちょうど 1つのオプション BULL4を取って みましょう。
時々、私のコードベース上で Eaの ように 見える
https://www.mql5.com/en/code/9156 - 興味深い
私はこれらを理解する(しかし、感じていない)、私は旗と私は その目的を理解して います。
小さな一歩 について、あなたはどう思いますか?
はい、スモールステップなので、エラーは管理可能です...。
コードベースEAから特定の何かを強調したいのですか?
これ以上、私や他の人がアドバイスした修正ステップを無視するのであれば、もうお手伝いすることはありません。
スリッページは0ですか?でも、修正されたエラーハンドリングがそれをキャッチしてくれます :-)
これは間違いではありませんが、理想的ではありませんし、最悪の場合、ループの中であなたが望んでいることを実現できません。最悪、0からOrdersTotalまでのループを使い始めることさえしないでください。これを読んでください。ループと注文のクローズまたは削除
ブローカーのスプレッドと、取引したいシンボルの桁数はいくつですか?ポイントの使い方が正しいかどうかわかりません(スレッドの最初のページを読んでください)。
はい、小さなステップなので、エラーは管理可能です...
あなたは、コードベースEAから特定の何かを強調したいですか?
私はノー、光に何もないと思う、私は私が書いたものを理解しています。
私は再びこれを見ることはありません - あなたはさらに補正の手順を無視した場合、私はもうあなたを助けることはありません - または他の誰か - 行うことを助言している。
はい。 私はNormalizeDoubleを行うのか知っている、私は理解していること(私が持っている場合:ユーロ/米ドル= 1.2390022129....09....そして、我々は必要です。1,29893終了!無限大ではありません)しかし、私はこれらを書くことができない、これらかもしれない?
if( NormalizeDouble( abc(),0 ) ) とします。
If ( NormalizeDouble ((Close[1]-Bid) +3*point),0 ) ;
スリッページは0?おそらくエラーになるでしょうが、固定されたエラー処理がそれを捕らえるでしょう :-)
1は問題 なくできる result=OrderSend(Symbol(),OP_BUY,0.41,Ask,1 ,Close[1]-25*Point,0,"",MAGICMA1,0,Blue);
エラーの処理、良い、我々は後になるかを参照してください。
これは間違ってはいませんが、理想的ではありませんし、最悪の場合、ループの中であなたが望んでいることをしません。最悪、0からOrdersTotalまでのループを使い始めることさえしないでください。これを読んでください。ループと注文のクローズまたは削除
非常に良い記事です!私は、最初にこれらを読む必要があります:)
ブローカーのスプレッドと、取引したいシンボルの桁数を教えてください。私はあなたが正しくポイントを使用しているかどうかわからない(あなたのスレッドの最初のページを読んでください)。
私はAdmiral MarketのBid=129000 Ask=129001を覚えています。これらは私が知っている問題ですが、私はこれらの瞬間に解決を持っていない私は良い例を見つけることができませんでした。
私はコードを書いている...
はい、私はNormalizeDoubleが何をすべきか知っている、私は理解していること(私は持っている場合:ユーロ/米ドル= 1.2390022129....09....そして、我々は必要です。1,29893終了!無限大ではありません)しかし、私はこれらを書くことができない、これらかもしれません?
if ( NormalizeDouble ( abc(),0 ) )
あなたはNormalizeDouble() boolはできません、手がかりは、関数名とドキュメントにもあります... ...
NormalizeDouble() にboolを指定することはできません。ヒントは関数名にあり、ドキュメントにもあります。
真を常態化できないのは非常に残念です :-)
はい。 私はNormalizeDoubleは何をすべきか知っている、私は理解していること(私は持っている場合:ユーロ/米ドル= 1.2390022129....09....です。そして、我々は必要です。1,29893終了!無限大ではありません)しかし、私はカント、これらを書くことができる?
いや、BidやClose[1]を正規化する必要はないですよ。つまり、等しいかどうか比較しない方がいいということです。
想像してみてください。
閉じる[1] = 1.31933
新しいバー
ティック1、入札= 1.31935
ティック2、入札= 1.31934
ティック3、ビッド = 1.31937
ティック4、ビッド= 1.31937
Tick5、ビッド = 1.31942
あなたのコードは、Bidが1.31936であるTickを探します。
このようなことは、> を使えば起こりません。
私は+1しても問題 ありません result=OrderSend(Symbol(),OP_BUY,0.41,Ask,1 ,Close[1]-25*Point,0,"",MAGICMA1,0,Blue) です。
これではあまり意味がありません。ポイントでの計算は、私の理解では全てPipsにすべきです。ただし、ECNブローカーは経験がないので、うまくいくかもしれません。
これは間違ってはいませんが、理想的ではありませんし、最悪の場合、ループの中であなたが望むものではありません。最悪、0からOrdersTotalまでのループを使い始めることさえしないでください。これを読んでください。ループと注文のクローズまたは削除
とても良い記事です。 私は最初にこれらを読む必要があります:)
同意すると、同じ著者によって書かれた多くの非常に良い記事より、があります。また、この本は、開始するには悪い場所ではありません。
私はAdmiral MarketのBid=129000 Ask=129001を持っています。これらは私が知っている問題ですが、私はこれらの瞬間に解決していない私は良い例を見つけていない。
あなたのブローカーのウェブサイトでは、EURUSDのために、最小スプレッドは0.1であると記載されています。平均スプレッドは0.5です。つまり、0,1 は1ポイントです。0,5は5ポイントです。
つまり、あなたの場合、1Pipは10*Pointです。スプレッドは、価格に3ポイントだけ追加するミニ計算を混乱させるでしょう。
adjust for 5 digit broker」で検索すると、たくさんの例が見つかるはずです。
HI :)
信号の 受け渡し で このコードが 悪かった のだと したら、 改善 さ れました 。 問題は 全く 別のところに あり 、等号の'=='にはないと思いました......もちろん'>='の方が良い考え です
質問1.これらの関数では、ローソク足でMyPipsを使用しなければならないのでしょうか? bool BULL4()
DIGITの問題。
私はこれらを見つけた
WHRoederによるhttps://www.mql5.com/en/forum/140097
WHRoederによるhttps://www.mql5.com/en/forum/123736
https://docs.mql4.com/predefined/variables/digits とhttps://docs.mql4.com/convert/doubletostr のDigitとは?
現在、私は MT4プラットフォームを使って いますが、 小数点以下 4桁 (Bid-Ask=0.0001 usualy)が表示されます 。
MT5では、小数点 以下5桁 で表示 されるのですが、MQL4とMQL5では違います。今のところ、この スペードは 私にとっては重要 ではありません。
この時点では、それについて話したく ありません( 必要な 場合を除く ) 。
そして、私は私のためにプログラムを書いたのは良いことだ:) あなたはどうですか?