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

 
が、どのページかわかりませんでした。
 
1Rakso писал(а)>>
ページが見つかりません。

こちらも見つかりませんでした。そんなことはどうでもいいんです。

オープニングプライスで仕事をするのであれば、新バーオープンの時にチェックすれば十分です。

int start(){
  if (! NevBar()) return(0);
  
  //.......
  
  return(0);
}

bool NevBar(){
  static int prevtime=0;
  if ( prevtime==Time[0]) return(false);
  prevtime=Time[0];
  return(true);
}

それくらいがちょうどいい。また、他の価格でも開封が可能であれば。他の仕組みを使うべきでしょう。

1つのシンボルと時間枠で1つのポジションしか建てられない場合、オープンポジションの数を制御する必要があります。

int CountOrder[6];

// Функция формирует массив с количеством открытых позиций по каждому виду ордеров.
//===============================================================================
int Order_Count_Calculate(string _Symbol, int _Magic, int _OP=-1){
   ArrayInitialize( Order_Count,0);
   for (int i = OrdersTotal() - 1;  i >= 0;  i--) {
      if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES))   continue;
      if (OrderSymbol() != _Symbol)                     continue;
      if (OrderMagicNumber() != _Magic)                   continue;
      Order_Count[OrderType()]++;
   }
   if (_OP>=0) return( Order_Count[_OP]);
   return(0);
}

さて、必要な配列要素の値を確認することで、このタイプのポジションがいくつ開いているかがわかります。

 
rid >> :

例えば(買いの逆指値の設定例).

(注文を出すために、設定した価格が気配値である必要はまったくありません。

現在の価格でも、CURRENT PRICE TO THE STOP PRICEからストップ・レベルを守る限り、どのような価格でもOKです)

('EURUSD - Trends, Forecast & Consequences')

の代わりに

double priceBUY=... ....

計算式を入力する

EH...特に添付のコード、本当にありがとうございました!まさにドクターの指示通り!))))

 
Vinin >> :

こちらも見つかりませんでした。そんなことはどうでもいいんです。

オープニングプライスで仕事をするのであれば、新バーオープンの時にチェックすれば十分です。

それくらいがちょうどいい。また、他の価格でも開封が可能であれば。他の仕組みを使うべきでしょう。

1つのシンボルと時間枠で1つのポジションしか建てられない場合、オープンポジションの数を制御する必要があります。

さて、必要な配列要素の値を確認することで、このタイプのポジションがいくつ開いているかがわかります。

ヴァインだ! ありがとうご ざいました
 
total = OrdersTotal();
short = TRUE;
long = TRUE;
                      for (int cnt = 0; cnt < total; cnt++) {
                      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
                      if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber){
                      if (OrderType() == OP_SELL) short = FALSE;
                      if (OrderType() == OP_BUY) long = FALSE;
                      }
                      }
                    
                     

私はコードにこれを持つが、私はこの配列を理解していない、それはどのようにこのバーで注文があり、それが閉じていた場合、我々は新しいバーを 待つことになります検出されるのでしょうか?

どう説明すればいいのか、言い間違いや機能の誤解があるかもしれない......。

1) ゼロバーで注文を出し、それがすでに決済されている場合、このバーですでに取引があり、それがすでに決済されているので、シグナルがあっても、このバーで別の注文を出すことはない。

各バーでは、このバーでの取引があった場合、1つだけの取引を開くことが許可されている、我々は注文を開くことはありません、どのように行うには?

人を助ける......)))I'm already having a meltdown \ \?

 
1Rakso писал(а)>>

私のコードにこれがありますが、このバーに注文があり、それが閉じて、我々は新しいバーを待つ必要があることを検出する方法を理解していないのですか?

どう説明すればいいのか、言い間違いや機能の誤解があるかもしれない......。

1) ゼロバーで注文を出し、それがすでに決済されている場合、このバーですでに取引があり、それがすでに決済されているため、シグナルが出ていてもこのバーで別の注文を出すことはせず、次のバーを待つだけである。

各バーでは、このバーでの取引があった場合、1つだけの取引を開くことが許可されている、我々は注文を開くことはありません、どのように行うには?

人を助ける......)))I'm already having a meltdown \ \?

Igor KIMさんのスレッド「KimIVの便利な機能」をチェックしてみてください。いずれかの機能でお答えします

 

ここで、アドバイザーを書こうとしているのですが...。学び始めたばかりなのに...。テスターでエラー4062が 表示される(ERR_STRING_PARAMETER_EXPECTED -4062- parameterof type string is expected)

どこを直せばいいのかがわからない。誰かローカルに コードを見てくれませんか:)

extern double Lots = 0.9;        //лот
extern double StopLoss = 70;
extern double DecreaseFactor = 80;
extern double MaximumRisk    = 0.014;
extern double MaximumLots    = 100;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetSizeLot() //оптимизация лотов
  {
   double Lot = Lots;
   int cycle;
   int prof = 0;
   int orders = HistoryTotal();     // history orders total
   int losses = 0;                  // number of losses orders without a break
   int vinn = 0;
   int i = orders;
//---- select lot size
  Lot = NormalizeDouble(AccountFreeMargin()* MaximumRisk / 100, 1);
//----
   if(AccountFreeMargin() <= 14) 
       DecreaseFactor = 14;
//----
   if(AccountFreeMargin() > 10000) 
       DecreaseFactor = 60;
//----
   if( DecreaseFactor > 0 && orders > DecreaseFactor)
     {
       //----
       for( cycle = 1; cycle < DecreaseFactor; cycle++)
         {
           i--;
           //----
           if(OrderSelect( i, SELECT_BY_TICKET, MODE_HISTORY) == false) 
             { 
               Print("Error in history!"); 
               break; 
             } 
           //----
           if(OrderCloseTime()>0)
             {
               prof = prof + OrderProfit(); 
               if(OrderProfit() <= 0 ) 
                   losses++;
               else 
                   vinn++;
             }
         }  
       if( prof <= 0 && losses > vinn) 
           Lot = 0.1;
       if( prof <=0 && vinn > losses) 
           Lot = Lot - (0.1* losses);
       if( prof > 0 && losses > vinn) 
         {
           Lot = Lot + (0.1*NormalizeDouble( vinn / 4, 0.1));
         }
       if( prof > 0 && losses <= vinn )
         {
           Lot = Lot + (0.1*NormalizeDouble( vinn / 2, 0.1));
         }
     } 
   if(AccountFreeMargin() < 300 || Lot < 0.1) 
       Lot = 0.1;
   if( Lot*1275 >= AccountFreeMargin()) 
       Lot = NormalizeDouble(AccountFreeMargin()* MaximumRisk / 100, 1);
   if( MaximumLots != 0 && Lot > MaximumLots) 
       Lot = MaximumLots;
   if( DecreaseFactor > orders) 
       Lot = Lots;
   return( Lot);
  }  
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+  
int start()
  {
  double glav1, sig1, glav2, sig2;
  int cnt, ticket, total;
glav1 =iCustom(NULL,0,"i_Trend",0,1);
sig1 =iCustom(NULL,0,"i_Trend",1,1); 
glav2 =iCustom(NULL,0,"i_Trend",0,2);
sig2 =iCustom(NULL,0,"i_Trend",1,2); 
   total = OrdersTotal();  // проверяем есть ли открытые позиции
   if( total < 1) 
     {
       if(AccountFreeMargin() < (500* Lots))  // проверяем денежки на счету
         {
           Print("Денег почти нет, осталось всего: ", AccountFreeMargin());
           return(0);  
         }
                  }
       // проверяем открытие позиции на покупку
       if(( glav2< sig2)  &&
          ( glav1> sig1))
         {
         OrderSend(Symbol(), OP_BUY, GetSizeLot(), Ask, 3, Ask - StopLoss*Point, "AlanMod expert", 16384, 0, Green);
          return(0); 
          }
           // проверяем возможность открытия на продажу
           if(( glav2> sig2)  &&
          ( glav1< sig1))
             {
             OrderSend(Symbol(), OP_SELL, GetSizeLot(), Bid, 3, Bid + StopLoss*Point, "AlanMod expert", 16384, 0, Red);
               return(0); 
             }
          for( cnt = 0; cnt < total; cnt++)
     {
           OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
       if(OrderType() <= OP_SELL &&   // проверка открытой позиции 
          OrderSymbol() == Symbol())  // проверка с нашего ли она графика
         {
           if(OrderType() == OP_BUY)    // если открыта позиция на покупку
             {
                            if( glav1< sig1)// проверяем закрывать или нет?
                 {
                                    OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet); // закрыли
                   return(0);  // сваливаем
                 }
                              }
           else // если эта позиция на продажу
             {
             if( glav1> sig1)//проверяем закрывать иль нет?
         {
         OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet); // закрыли
        return(0); // сваливаем
        }
      }
    }
  }
}
 
Reys >> :

ここで、アドバイザーを書こうとしているのですが...。学び始めたばかりなのに...。テスターでエラー4062が 表示されました(ERR_STRING_PARAMETER_EXPECTED -4062- expected parameter of type string)

どこを直せばいいのかがわからない。どなたか地元の 方がコードに目を通してくださいますように:)

1) doubleNormalizeDouble( double value, int digits) とすると、(vinn/2, 0.1) となる。

2)OrderSend(Symbol( ), OP_BUY, GetSizeLot(), Ask, 3, Ask - StopLoss*Point,NO TAKE_profit, "AlanMod expert", 16384, 0, Green) を実行

 
ありがとうございます、先程まででした)
 

カスタムインジケータの バッファの名前はどうすればいいですか?