[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 64

 

Razを定数化する

#define Raz 5

 
ありがとうございます!!!
 

配列のサイズを 可変にする必要がある場合は、以下のような感じです。

// Поиск фракталов
void fFractals(bool     РегулярностьЛевогоКрыла,
               bool     РегулярностьПравогоКрыла,
               int      ДлинаЛевогоКрыла,
               int      ДлинаПравогоКрыла,
               int      LostBars,
               int&     LFractals,int& HFractals,
               double&  LowF[],double& HighF[]) {
   double R, C[];
   int dim, i, j, Error;
   dim=ArrayResize(C, ДлинаЛевогоКрыла+1+ДлинаПравогоКрыла);
   if( LostBars<Bars-1 ) {
      i=ДлинаПравогоКрыла+БарОкончания+LostBars;
   }
   else {
      i=FirstBar-ДлинаЛевогоКрыла;
   }
   while( i>=ДлинаПравогоКрыла+БарОкончания ) {
      j=0;
      R=0;
      while ( j<dim ) { C[j]=High[j+i-ДлинаПравогоКрыла]; j++; }
      if( ( ( C[ДлинаПравогоКрыла]-C[ДлинаПравогоКрыла+1]> Zero &&  РегулярностьЛевогоКрыла )
         || ( C[ДлинаПравогоКрыла]-C[ДлинаПравогоКрыла+1]>-Zero && !РегулярностьЛевогоКрыла ) )
       && ( ( C[ДлинаПравогоКрыла]-C[ДлинаПравогоКрыла-1]> Zero &&  РегулярностьПравогоКрыла )
         || ( C[ДлинаПравогоКрыла]-C[ДлинаПравогоКрыла-1]>-Zero && !РегулярностьПравогоКрыла ) ) ) {
         R=C[ДлинаПравогоКрыла];       // Локальный максимум
         j=1;
         while ( j < dim ) {
            if( ( j< ДлинаПравогоКрыла && C[j-1]-C[j]>-Zero &&  РегулярностьПравогоКрыла )
             || ( j> ДлинаПравогоКрыла && C[j]-C[j-1]>-Zero &&  РегулярностьЛевогоКрыла  )
             || ( j< ДлинаПравогоКрыла && C[j-1]-R   > Zero && !РегулярностьПравогоКрыла )
             || ( j> ДлинаПравогоКрыла && C[j]-R     > Zero && !РегулярностьЛевогоКрыла  ) ) {
               R=0;                    // Нет фрактала
               break;
            }
            j++;
      }  }
      if( R > Zero && HighF[i]<Zero ) {
         HFractals++;
         HighF[i]=R;
      }
      j=0;
      R=0;
      while ( j < dim ) { C[j]=Low[j+i-ДлинаПравогоКрыла]; j++; }
      if( ( ( C[ДлинаПравогоКрыла+1]-C[ДлинаПравогоКрыла]> Zero &&  РегулярностьПравогоКрыла )
         || ( C[ДлинаПравогоКрыла+1]-C[ДлинаПравогоКрыла]>-Zero && !РегулярностьПравогоКрыла ) )
       && ( ( C[ДлинаПравогоКрыла-1]-C[ДлинаПравогоКрыла]> Zero &&  РегулярностьПравогоКрыла )
         || ( C[ДлинаПравогоКрыла-1]-C[ДлинаПравогоКрыла]>-Zero && !РегулярностьПравогоКрыла ) ) ) {
         R=C[ДлинаПравогоКрыла];       // Локальный минимум
         j=1;
         while ( j < dim ) {
            if( ( j< ДлинаПравогоКрыла && C[j]-C[j-1]>-Zero &&  РегулярностьПравогоКрыла )
             || ( j> ДлинаПравогоКрыла && C[j-1]-C[j]>-Zero &&  РегулярностьЛевогоКрыла  )
             || ( j< ДлинаПравогоКрыла && R-C[j-1]   > Zero && !РегулярностьПравогоКрыла )
             || ( j> ДлинаПравогоКрыла && R-C[j]     > Zero && !РегулярностьЛевогоКрыла  ) ) {
               R=0;                    // Нет фрактала
               break;
            }
            j++;
      }  }
      if( R > Zero && LowF[i]<Zero ) {
         LFractals++;
         LowF[i]=R;
      }
      i--;
   }
   return(0);
}
 

これでは何のことかわからない...。

if () {buy}。

else while (a<0)

{プリント ...}。

ては

a "が0より大きい場合、COUNTERはループから抜けず、次のifに行かない。

このようなことが起こるのはなぜでしょうか?

 
すごい!ありがとうございます!!!!!!!
 
lottamer:

これでは何のことかわからない...。

if () {buy}。

else while (a<0)

{プリント ...}。

ては

a "が0より大きい場合、COUNTERは終了せず、次のifに進みません。

このようなことはあり得るのだろうか?


括弧を付けてみてください。

if () {buy}。

else{ while (a<0)

{print ...}}

ては

 
tara:

括弧を付けてみてください。

if () {buy}。

else{ while (a<0)

{print ...}}

ては


はうまくいかなかった。
 
2013.01.09 19:37:44 Robot_zero EURUSD,M1: shutdown by timeout は何ですか?

 
lottamer:
2013.01.09 19:37:44 Robot_zero EURUSD,M1: shutdown by timeout は何ですか?


タイムアウトによるシャットダウン
 

こんにちは、皆さん!それをやり直すことは可能ですか? 私は、ローソクが線の下または上に閉じたときにポジションを開きたい。 多分、追加する別のスクリプトですか?

これは専門家の一部です。

//+------------------------------------------------------------------+

//|ポジションを開く|
//+------------------------------------------------------------------------------+
void OpenPositions() {
bool lbBuy=False, lbSell=False;
double ldStop=0, ldTake=0;

if ((Ask>gdPrevAsk && Ask>=gdUpPrice && ebBuyFromUp)
。|| (Ask<gdPrevAsk && Ask<=gdDnPrice && ebBuyFromDn)) lbBuy=True;
if ((Bid>gdPrevBid && Bid>=gdUpPrice && !ebBuyFromUp)
|| (Bid<gdPrevBid && Bid<=gdDnPrice && !ebBuyFromDn)) lbSell=True;

if (lbBuy) {
if (ExistPositionByOP(OP_SELL))CloseAllPositions();
if (!ExistPositionByOP(OP_BUY)){
if (StopLoss!=0) ldStop=Ask-StopLoss*Point;
if (TakeProfit!=0) ldTake=Ask+TakeProfit*Point;
OpenPosition(OP_BUY, ldStop, ldTake);
}
}
if (lbSell) {
if (ExistPositionByOP(OP_BUY))CloseAllPositions();
if (!ExistPositionByOP(OP_SELL)){
if (StopLoss!=0) ldStop=Bid+StopLoss*Point;
if (TakeProfit!=0) ldStop=Bid+StopLoss*Point; if (TakeProfit!=0) ldTake=Bid-TakeProfit*Point;
OpenPosition(OP_SELL, ldStop, ldTake);
}
}
} }.