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

 
ありがとうございました。でも、リンク先で紹介されている例でも全てうまくいきませんでした...。
 
int start()
  {
   int i, limit;
   int counted_bars=IndicatorCounted();
//---- 
   if( counted_bars>0) counted_bars--;
   limit=Bars- counted_bars;
//---- 
   for( i= limit; i>=0; i--) 

      if (Close[ i+1]>0) 

         Buffer0[ i]=Close[ i]/Close[ i+1];

   for( i= limit; i>=0; i--) 

      double StdDev=iStdDevOnArray( Buffer0,Bars,16,0,MODE_SMA, i);

      Buffer1[ i]= StdDev;
      

   return(0);
  }
なぜかうまくいきません、何が問題かわかるように助けてくださいありがとうございました。
 
Mr-Franklyn >>:
Почему-то не работает, помогите разобраться в чём проблема! Спасибо!

かっこが抜けている

 

エクストラオーダーが来る前に、Equity trawlで直そうとする。


がこのコードを書きました。

int init(){
      //Наиль - фиксируем сумму средств на начало работы советника
       EquityStart=AccountEquity();
       StartBalance=AccountBalance();
       if(GlobalVariableSet("EquityStart", EquityStart)==0)
       if(GlobalVariableSet("StartBalance", StartBalance)==0)
       return(false);
       //---- продолжение обработки
//===============

//трал у  меня выведен в отдельную функцию:
bool fPrEquity(){
   if(! PrEquity)return(true);
   static bool ClAllFlag=false;
   double Pr2=0;

      StartBalance=GlobalVariableGet("StartBalance");
      Pr2=AccountEquity()- StartBalance;
      
       if( Pr2>= ProcentToclose/100.0*AccountEquity()){
      Print ("Средстава возросли. Закрываем все!!!");
         ClAllFlag=true;
            StartBalance=AccountEquity();
            GlobalVariableSet("StartBalans", StartBalance);
         
       }
      if( ClAllFlag){
         if( fOrderCloseMarket(true,true)==0){
            ClAllFlag=false;

            return(true);
         }
         else{
            return(false);
         }
      } 
   return(true);           
}

しかし、EAはこのように動き出す。


何が問題なのか、どなたか教えてください。

 
Nail_Saby >>:

Пытаюсь сделать трал Эквити, чтобы зафиксировать его раньше, чем наберет лишние ордера:


написал такой код:

Но советник начинает работать так:


Кто подскажет, в чем проблема?

比較対象を間違えているようです。

if(Pr2>=ProcentToclose/100.0*AccountEquity())
って、そうしないと
if(Pr2>=ProcentToclose/100.0*StartBalance)
 
alsu >>:

Вы, кажется, не с тем сравниваете:

直したが、どうにもならない・・・。

ちなみに、ログにはいつも

Средстава возросли. Закрываем все!!!

と書き、持分額を書き込む。

サイクルと関係があるのでしょうか?

 
Nail_Saby писал(а)>>

エクストラオーダーが来る前に、Equity trawlで直そうとする。

がこのコードを書きました。

しかし、EAはこのように動き出す。

何が問題なのか、どなたか教えてください。

関数が最初に実行された後、変数ClAllFlagの値はtrueを取り、その値は変化しない。変数の型は単純にboolでなければなりません。

 

私が間違っていることを説明する



ftpサーバーにディレクトリがないというエラーが出ますが、確かにあるのですが、どこで間違ったのでしょうか?

 
Vinin >>:

После первого запуска функции значение переменной ClAllFlag принимает значение true и больше не меняет своего значения. Надо бы тип переменной сделать просто bool.

bool ClAllFlag の前にある static を削除するということでしょうか?

しかし、この変数はコードの他の場所でも使われているのです...。すべての注文が終了したところ。

これを試したが、役に立たない。

ログに常にメッセージが表示されることに戸惑う...もしかしたらどこかで

return
は価値がないのでしょうか?
 
Nail_Saby писал(а)>>

bool ClAllFlagの前にあるstaticを削除するということですか?

しかし、この変数はコードの他の場所で使われている...。すべての注文が終了したところ。

これを試したのですが......役に立ちません。

ログに常にメッセージが表示され、混乱しています...。

>>は無価値なのか?

Pr2は何に相当するのか?

おそらく、値を再印刷する必要があるのでしょう。