extern int TP = 50; extern int SL = 50; extern int Trailing = 15;
int init() {return(0);}。 int deinit() {return(0);}。
int start() { //========= 損益分岐点の算出方法 int i; double lotsBUY=0; double lotsSEL=0; double sumBUY=0; double sumSEL=0;
for (i=0; i<OrdersTotal(); i++) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_BUY) { lotsBUY=lotsBUY+OrderLots()です。 sumBUY=sumBUY+OrderLots()*OrderOpenPrice()です。 }
if (OrderType()==OP_SELL) { lotsSEL=slotsSEL-OrderLots()。 sumSEL=sumSEL-OrderLots()*OrderOpenPrice()です。 } } double priceBUY=0; if (lotsBUY!=0) priceBUY=sumBUY/lotsBUY; double priceSEL=0; if (lotsSEL!=0) priceSEL=sumSEL/lotsSEL;
extern int TP = 100; extern int SL = 100; extern int Trailing = 15;
int init() {return(0);} int deinit() {return(0);}
int start() { //========= Расчёт уровня безубытка ====== int i; double lotsBUY=0; double lotsSEL=0; double sumBUY=0; double sumSEL=0;
for (i=0; i<OrdersTotal(); i++) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_BUY) { lotsBUY=lotsBUY+OrderLots(); sumBUY=sumBUY+OrderLots()*OrderOpenPrice(); }
if (OrderType()==OP_SELL) { lotsSEL=lotsSEL-OrderLots(); sumSEL=sumSEL-OrderLots()*OrderOpenPrice(); } } double priceBUY=0; if (lotsBUY!=0) priceBUY=sumBUY/lotsBUY; double priceSEL=0; if (lotsSEL!=0) priceSEL=sumSEL/lotsSEL;
良い人は、助けて、私は理解できない、TrailingStopは、取引が売らtrall作品に開かれた場合、それが正常に動作するように、しかし、あなたは買い、次に何らかの理由ですぐに修正ストッパーを開いた場合。どこがエラーなのか理解できない...。以下はそのコードです。
extern int TP = 50;
extern int SL = 50;
extern int Trailing = 15;
int init()
{return(0);}。
int deinit()
{return(0);}。
int start()
{
//========= 損益分岐点の算出方法
int i;
double lotsBUY=0;
double lotsSEL=0;
double sumBUY=0;
double sumSEL=0;
for (i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUY)
{
lotsBUY=lotsBUY+OrderLots()です。
sumBUY=sumBUY+OrderLots()*OrderOpenPrice()です。
}
if (OrderType()==OP_SELL)
{
lotsSEL=slotsSEL-OrderLots()。
sumSEL=sumSEL-OrderLots()*OrderOpenPrice()です。
}
}
double priceBUY=0;
if (lotsBUY!=0) priceBUY=sumBUY/lotsBUY;
double priceSEL=0;
if (lotsSEL!=0) priceSEL=sumSEL/lotsSEL;
//======== オープンポジション ====================================================================
double MA=iMA(NULL,0,14,0,MODE_SMMA,PRICE_CLOSE,0);
if (OrdersTotal() < 1 && Bid>MA)
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-SL*ポイント,Ask+TP*ポイント,0,0,グリーン)。
if (注文合計() < 1 && Ask<MA)
OrderSend(Symbol()、OP_SELL、0.1、Bid、3、Bid+SL*Point、Bid-TP*Point、0、0、Red)。
//===================================== トレーリングストップ
for(i = 0; i <= OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_SELL && Trailing!=0)
{
if(priceSEL-Ask>=Trailing*Point && OrderStopLoss()>(Ask+Trailing*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE)を実行。
}
}
if (OrderType()==OP_BUY && Trailing!=0)
{
if(Bid-priceBUY>=Trailing*Point && (Bid-Point*Trailing)>OrderStopLoss()の場合。)
{
オーダーモディファイ(オーダーチケット()、オーダーオープン価格()、ビッドポイント*トレイリング、オーダーテイクプロフィット(),0,CLR_NONE)
}
}
}
return(0)です。
}
TrailingStop ブロックの priceBUY を OrderOpenPrice() に変更するとうまくいくのですが、始値からではなく、ブレークイーブンレベルからトレールする必要があるのですが......。売りの時はうまくいくのですが、買いの時はなぜかうまくいきません...。どこが間違いなのか理解できない...SOS!!!!!!!!!!
これはエラーではなく、最低残高に達した、つまり口座から資金が流出したというメッセージです。
こんにちは!!!私のEAはここと一緒に注文を引っ込めています。
私のEAは、少なくとも注文が2〜5件になるまでは、以前はうまくいっていたようです。 しかし、今では片側20本、50本と好きなだけ注文ができるようになりました。要するに、きれいにならないのです。2回、3回、4回とそうなって、突然そうでなくなったりするんです。
テスターではどうなんでしょうね。一般的には価格付近の注文をいくつか削除してくれますが、全てではありませんねどんな逸脱を想定し、工夫し、空想すれば、きっと閉じることができるだろう。
本当に、以前は大丈夫だったんですよ。以前は閉まっていたんですよね? 他に何が必要なんだ?
良い人は、助けて、私は理解できない、TrailingStopは、取引が売らtrall作品に開かれた場合、それが正常に動作するように、しかし、あなたは買い、次に何らかの理由ですぐに修正ストッパーを開いた場合。どこがエラーなのか理解できない...。以下はそのコードです。
extern int TP = 100;
extern int SL = 100;
extern int Trailing = 15;
int init()
{return(0);}
int deinit()
{return(0);}
int start()
{
//========= Расчёт уровня безубытка ======
int i;
double lotsBUY=0;
double lotsSEL=0;
double sumBUY=0;
double sumSEL=0;
for (i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUY)
{
lotsBUY=lotsBUY+OrderLots();
sumBUY=sumBUY+OrderLots()*OrderOpenPrice();
}
if (OrderType()==OP_SELL)
{
lotsSEL=lotsSEL-OrderLots();
sumSEL=sumSEL-OrderLots()*OrderOpenPrice();
}
}
double priceBUY=0;
if (lotsBUY!=0) priceBUY=sumBUY/lotsBUY;
double priceSEL=0;
if (lotsSEL!=0) priceSEL=sumSEL/lotsSEL;
//======== Открытие позиции =====
double MA=iMA(NULL,0,14,0,MODE_SMMA,PRICE_CLOSE,0);
if (OrdersTotal() < 1 && Bid>MA)
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);
if (OrdersTotal() < 1 && Ask<MA)
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Bid+SL*Point,Bid-TP*Point,0,0,0,Red);
//======= Trailing Stop =======
for(i = 0; i <= OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_SELL && Trailing!=0)
{
if(priceSEL-Ask>=Trailing*Point && OrderStopLoss()>(Ask+Trailing*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
}
}
if (OrderType()==OP_BUY && Trailing!=0)
{
if(Bid-priceBUY>=Trailing*Point && (Bid-Point*Trailing)>OrderStopLoss())
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trailing,OrderTakeProfit(),0,CLR_NONE);
}
}
}
return(0);
}
良い人は、助けて、私は理解できない、TrailingStopは、取引が売らtrall作品に開かれた場合、それが正常に動作するように、しかし、あなたは買い、次に何らかの理由ですぐに修正ストッパーを開いた場合。どこがエラーなのか理解できない...。以下はそのコードです。
TrailingStopブロックのpriceBUYをOrderOpenPrice()に変更すると、すべてがうまくいくことがありますが、私は開始価格からではなく、ブレークイーブンレベルからトレーリングストップが必要です....売りの時はうまくいくのですが、買いの時はなぜかうまくいきません...。どこが間違いなのか理解できない...SOS!!!!!!!!!!
こんにちは!!!私のEAはここと一緒に注文を引っ込めています。
私のEAは、少なくとも注文が2〜5件になるまでは、以前はうまくいっていたようです。 今では、片側20個、50個と、好きなだけ注文できる新しいバリエーションができました。要するに、きれいにならないのです。2回、3回、4回とそうなって、突然そうでなくなったりするんです。
テスターではどうなんでしょうね。価格付近の注文をいくつか削除してくれますが、全部は削除してくれませんどのような逸脱を工夫すれば、必ず閉じることができるのか、空想してみました。
本当に、以前はすべて順調だったのですか?以前は閉まっていたんですよね? 他に何が必要なんだ?
それじゃダメなんだ
注文が閉じられていない間は、そのOrderClosePriceは0になり、この場所には注文を閉じようとしている実際の価格、つまり売り注文の場合はAsk、買い注文の場合はBidを代入する必要があります。
まあ、そんなことはないんですけどね。
注文が決済されるまで、そのOrderClosePriceは0に等しく、この場所には注文を決済する実際の価格、つまり売り注文の場合はAsk、買い注文の場合はBidを入力しなければなりません。
いいえ、閉じていない注文のOrderClosePrice()はゼロに等しくない - 確認してください。OrderCloseTime() - はい