[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 591

 
vik-777:

問題解決に役立つ

閉じたものをすべて試聴する

for (int i=0; i<OrdersHistoryTotal(); i++)// すべてのオーダーについて
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

そして、マジックナンバーでフィルタリングします。

if (OrderMagicNumber()==12)

フィルタは3つのポジションを満たしますが、必要なのは最後のクローズドな1つだけです。

最後の1枚を残す方法がわからないのですか?

感謝

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара закрытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
質問に関連するものには下線が引かれています。
 

今回も非常にニーズが高い。

問題を解決するのを手伝ってください。

すべてのクローズド ポジションで選択しています。

for (int i=0; i<OrdersHistoryTotal(); i++)// 端末の全オーダーについて
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

その後、マジックナンバーでフィルタリング

if (OrderMagicNumber()==12)

フィルタは3つのポジションにマッチしますが、最後に閉じたポジションだけが必要です。

最後の1枚だけを残す方法がわからない?

感謝

 
- バカでいいじゃないか!タムツタムツ(ある曲の歌詞)
 

助けてください!古い注文を閉じた後、すぐにTpまたはSLの価格で注文を出す必要があります。

#property copyright"著作権 © 2010, MetaQuotes Software Corp.
#プロパティリンク "http://www.metaquotes.net"
#property show_confirm
extern int MaxRisk=3;
extern bool Buy=false; //買い注文を出す場合
extern bool Sell=true; //売り注文を出す。
extern inttern MagicNumber=7749。
extern TP=210;
extern inttern SL=420。

{
double point=MarketInfo(Symbol(),MODE_POINT);//Request Point
double Free=AccountFreeMargin()。
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Lot =MathFloor(Free*MaxRisk/100/One_Lot/Step)*Step;
int pos,total=OrdersTotal();
//----

if(Buy==true && OrdersTotal() <=1)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Ask+TP*Point, "777"+Symbol(), MagicNumber, 0, DarkGreen)。

Buy=false。
}
if(Sell==true && OrdersTotal() <=1)
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Bid-TP*Point, "4949"+ Symbol(), MagicNumber, 0, DarkGreen)を送信。

Sell=falseとした。
}

for (pos=0; pos<total; pos++)
if(OrderSelect(pos,SELECT_BY_POS )==true)

if(OrdersTotal()==OP_BUY)
if(PRICE_CLOSE==OrderTakeProfit()の場合) Buy=true;
if(PRICE_CLOSE==OrderStopLoss()の場合。
Sell=trueとした。
}
}

if(OrderSelect(pos,SELECT_BY_POS )==true)
if (注文合計()==OP_SELL)
{
if(PRICE_CLOSE==OrderStopLoss()の場合) Buy=true;
if(PRICE_CLOSE==OrderTakeProfit()の場合) Sell=trueとした。

}
} }

//----
return(0)です。
}
//+------------------------------------------------------------------+




 

みんな、ここに質問がある、EAが注文を開こうとするが、価格が変化してエラー間違った価格を表示する、どのように私はそれを回避することができますので、それは購入するまで購入しようとする?

void CLOSEORDER(string ord)
{
   for (int i=0; i<OrdersTotal(); i++)
   {                                               
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {
         if (OrderSymbol()!=Symbol()) continue;
         if (OrderType()==OP_BUY && ord=="Buy")
            OrderClose(OrderTicket(),OrderLots(),Bid,30,CLR_NONE);// Закрываем Buy
         if (OrderType()==OP_SELL && ord=="Sell")
            OrderClose(OrderTicket(),OrderLots(),Ask,30,CLR_NONE);// Закрываем Sell
      }   
   }
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
   int error;
   if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, LOT,Ask,20,SL,TP,"", 1,3);
   if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,LOT,Bid,20,SL,TP,"",-1,3);
   if (error==-1) //неудачная покупка OK
   {  
      ShowERROR(error,0,0);
   }

昔はそうだったんですけどね。

Bid,3,CLR_NONE

5の記号があるので30を追加しましたが、使い物になりません。

 
vik-777:

今回も非常にニーズが高い。

問題を解決するのを手伝ってください。

閉店した商品を全て試食しています。



最後から始めて、最初にマッチしたものが1つ。

for (int i=OrdersHistoryTotal()-1;i>=0; i--)//
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)


 
Craft:

もうひとつ、ストップと新規ポジションの条件は同じなのに、ポジションのクローズだけで、リバーサルがない箇所があるのが気になります。


Expert Advisor の買い条件と売り条件が相互に排他的でないため、このような状況が起こり得ます。に従って、テスターで必要な変数の値をトレースしてみてください。

if(Time[0]=='время_нужного_бара') //чтоб не засорять логи берем на конкретном баре - посмотрите на картинке, где именно ошибка
{
   Print("переменная=", значение);
}
 
Pyxlik2009:

みんな、ここに質問がある、EAが注文を開こうとするが、価格が変化してエラー間違った価格を表示する、どのように私はそれを回避することができますので、それは購入するまで購入しようとする?

昔はそうだったんですけどね。

5の記号があるので30を追加しましたが、使い物になりません。

順番にwhile(true)をして、135エラーをチェックし、RefreshRates()をする。ほら、端末と一緒に例のスクリプトも入っていて、全部そこで説明されていますよ。
 
alsu:

このような状況は、EA の買いと売りの開始条件が相互に排他的でないために発生する可能性があり、詳細に調査する必要があります。の線に沿って、テスターで必要な変数の値をトレースしてみてください。

OK、これはコードのどの部分に挿入すればいいのか、どのように実用化されるのか?
 
SergNF:

質問に関連するものには下線が引かれています。
例えば、3,6,9行目なので、3行目がマジシャンと最後に閉じたものであることが必要なのです。