[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 636

 

良い人は、助けて、私は理解できない、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!!!!!!!!!!

 
Roman.:


これはエラーではなく、最低残高に達した、つまり口座から資金が流出したというメッセージです。

ありがとうございました。
 

こんにちは!!!私のEAはここと一緒に注文を引っ込めています。

 if(Summaprofita()>=Profit_v_balans )
        {
         for(int i=OrdersTotal()-1;i>=0;i--)
           {
              bool error=true;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            
            if( magic==OrderMagicNumber( ) && OrderSymbol()==Symbol())
              {
              
                 OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE); error=false;
                           Sleep(1000);
             OrderDelete(OrderTicket());error=false;
         } } }
        

私の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ブロックのpriceBUYをOrderOpenPrice()に変更すると、すべてがうまくいくことがありますが、私は開始価格からではなく、ブレークイーブンレベルからトレーリングストップが必要です....売りの時はうまくいくのですが、買いの時はなぜかうまくいきません...。どこが間違いなのか理解できない...SOS!!!!!!!!!!
 
MIR-ASOV:

良い人は、助けて、私は理解できない、TrailingStopは、取引が売らtrall作品に開かれた場合、それが正常に動作するように、しかし、あなたは買い、次に何らかの理由ですぐに修正ストッパーを開いた場合。どこがエラーなのか理解できない...。以下はそのコードです。

TrailingStopブロックのpriceBUYをOrderOpenPrice()に変更すると、すべてがうまくいくことがありますが、私は開始価格からではなく、ブレークイーブンレベルからトレーリングストップが必要です....売りの時はうまくいくのですが、買いの時はなぜかうまくいきません...。どこが間違いなのか理解できない...SOS!!!!!!!!!!

修正前のpriceBUYの値をPrint() で出力して、期待通りになるかどうか試してみてください...。
 
修正前のpriceBUYの値をPrint()で出力して、期待通りになるかどうか試してみてください...。は
い、確認しました、完全に、完全に対応しています......。本来、BUYのブレークイーブンレベルは注文の開始価格と 同じですが、なぜかうまくいきません。OrderOpenPrice()を入れるとすべてうまくいき、priceBUYを入れるとダメです.........。
 
ほとんどの場合、オープン時に変数priceBUYに 0が入っているので、Bid-priceBUY(0)==Bidとなり、そのため
 
Dimka-novitsek:

こんにちは!!!私のEAはここと一緒に注文を引っ込めています。

私のEAは、少なくとも注文が2〜5件になるまでは、以前はうまくいっていたようです。 今では、片側20個、50個と、好きなだけ注文できる新しいバリエーションができました。要するに、きれいにならないのです。2回、3回、4回とそうなって、突然そうでなくなったりするんです。

テスターではどうなんでしょうね。価格付近の注文をいくつか削除してくれますが、全部は削除してくれませんどのような逸脱を工夫すれば、必ず閉じることができるのか、空想してみました。

本当に、以前はすべて順調だったのですか?以前は閉まっていたんですよね? 他に何が必要なんだ?

それじゃダメなんだ

  OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);

注文が閉じられていない間は、そのOrderClosePriceは0になり、この場所には注文を閉じようとしている実際の価格、つまり売り注文の場合はAsk、買い注文の場合はBidを代入する必要があります。

 
alsu:

まあ、そんなことはないんですけどね。

注文が決済されるまで、そのOrderClosePriceは0に等しく、この場所には注文を決済する実際の価格、つまり売り注文の場合はAsk、買い注文の場合はBidを入力しなければなりません。


いいえ、閉じていない注文のOrderClosePrice()はゼロに等しくない - 確認してください。OrderCloseTime() - はい
 
ありがとうございます!!!試してみます、いただきました。