externint TakeProfit=18;
externint StopLoss=18;
externdouble Lot=0.01;
externint StartTime=0;
int Today=0;
int h=10;
int h1=26;
int mag=777;
bool b=0,s=0, //соответственно бай или селл
bs=0,// если закрытие по стоплоссу ордера бай
ss=0,// если закрытие по стоплоссу ордера sell
bt=0,
st=0;// то же по ТПdouble bl=0,sl=0; // лоты соответсвенно для бай и селл//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаемif(!IsTradeAllowed()) return(0); // пропустим тик если терминал занятint total = OrdersTotal();
if(total == 0)
{NewOrder(OP_BUY,Lot);
NewOrder(OP_SELL,Lot);
NewOrder(OP_BUYLIMIT,Lot);
NewOrder(OP_SELLLIMIT,Lot);
NewOrder(OP_BUYSTOP,Lot);
NewOrder(OP_SELLSTOP,Lot);
Today=TimeDay(TimeCurrent());}
{
for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol())
{ if (OrderType() == OP_BUY ) {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1;
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL) {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1;
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
}
}
}
}//endif(bs==1||bl==1)
{
NewOrder1(OP_BUYLIMIT,Lot);
Today=TimeDay(TimeCurrent());}
と、ここでオーダー開始
int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофитdouble SL=0; //стоплоссdouble PR=0; //Ценаdouble LT=0; //Лотwhile(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
{PR=Ask-Point*h;
if(TakeProfit>0) TP=PR+TakeProfit*Point;
if(StopLoss>0) SL=PR-StopLoss*Point;
if(Lot>0) LT=3*Lot;}
int tic1=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
//-----------if(tic1<0) Print(GetLastError());
if(tic1>0){
b=0;s=0; //соответственно бай или селл
bs=0;// если закрытие по стоплоссу ордера бай
ss=0;// если закрытие по стоплоссу ордера sell
bt=0;
st=0;// то же по ТП
bl=0;sl=0; // лоты соответсвенно для бай и селл
}
//-----------return(tic1);}
まだこの注文は一括で開きます。
私のekspertでは、このように変数を設定します。
と、ここでオーダー開始
例えば20pipsの利益が出たときに、ブレークイーブンレベルで一旦ストップをかける関数のコードを教えてください。
ご返信ありがとうございました:)
ボリス もっと単純な話なんだ。この行を落とすと
コードの一番上にある(どの関数にもない、分離すること)。
そして、OrderSend(...)関数の呼び出しがある箇所では、それをif演算子の追加の抱擁で囲むだけです。
さて、次の注文を出す前に、オペレーターは現在のバーで取引があるかないかをチェックします。もしそうであれば、現在のバーが変数newに格納されており、もし現在のバーが格納されているものと一致すれば、ポジションは開かれない。したがって、バーが新しい場合、その開始時刻は変数newのデータと一致しないので、ディールは開かれ、変数newは 新しい値を得ることになります。
あなたのEAのアーキテクチャを正確に把握しているわけではありませんが、この方法はほとんどの場合うまくいくはずです。
本当にありがとうございました。フィット感もバッチリ!
これ以上の進め方はないと思います。
配列の束を使ったインジケータがあります。2番目のインジケータは、これらの配列と連動する必要があります。 計算し、その結果を独自のテーブルに出力すること。
一番簡単な方法は、このインジケータを呼び出すことですが、それは不可能なようです。
他のアレイにアクセスする方法は?
どうだろう。
こんにちは、MT4でログを表示する方法を教えてください。
たった1つの内容で15通も投稿する必要はありません。また、その際は後始末をすることが望ましいです。おじさんたちを待っていてはいけない。
本当に必要なのか...:) あるいはマウスが動かない...。
詰まっているのはマウスではありません。それは焦りです。結局15件の書き込みを削除するのに20分かかりました。
詰まっているのはマウスではありません。
まだこの注文は一括で開きます。
私のekspertでは、このように変数を設定します。
と、ここでオーダー開始
詰まっているのはマウスではありません。それは焦りです。結局15件の書き込みを削除するのに20分かかりました。