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

 
rustein:
フォーラムを検索しましたが、クイックフィックスが見つからず、テスターでは動作しないが、実生活では動作するという問題を解決するのに役立っています。

ありがとうございます。

テスターがハングアップするのであれば、そのはずです。(ループからの出口を必ず記述してください)。

このように

    while(Result == -1)
    {
      if(TotalOpenOrders() < TotalOrders)
      {
        if(TrendDetection() == BULL)
        {
          Result = OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,NormalizeDouble(Ask,Digits)-(StopLoss*Point),NormalizeDouble(Ask,Digits)+(TakeProfit*Point),OrderComments,Magic,0,CLR_NONE); 
         if((IsTesting()||IsOptimization())&&Result == -1)break;
        }
 
drknn:


あなたの問題が何であるかは、何とも言えません。MQL4では、コード中の負の数は必ず括弧で囲むことをルールとしています。括弧がなくてもエラーが発生することがあります。

ただし、extern で始まるコード行では、負の値を括弧で囲む必要はない。なぜそうなのかはわかりません。

ありがとうございます、しかし、それは動作しません、ループを取り除くための構成を提案することができます if(IsTesting()==true || IsOptimization()==true)
 
rustein:
ありがとうございます、しかし、それは動作しません、あなたはループを取り除くために構成を提案することができます if(IsTesting()==true || IsOptimization()==true)

 while(Result == -1)
    {
      if(TotalOpenOrders() < TotalOrders)
      {
        if(TrendDetection() == BULL)
        {
          Result = OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,NormalizeDouble(Ask,Digits)-(StopLoss*Point),NormalizeDouble(Ask,Digits)+(TakeProfit*Point),OrderComments,Magic,0,CLR_NONE); 
         if((IsTesting()||IsOptimization())&&Result == -1)break;
        }

^^

 
drknn:
私の理解では、コードのどこかでファイルがすでに開かれているが閉じられていないのだろうと思います。そのためか、ファイルを再度開くことができず、警告ウィンドウが出続けています。でも、私はテレパスのメンバーではないので、間違っているかもしれませんね...。
ある瞬間にエキスパートがcsvファイルを見て、そこにどんなコマンドがあるか(買い、売り、閉じ)を確認し、このコマンドがEXCELによってファイルに書き込まれる、という状況です。問題は、現時点では、エキスパートがファイルを読み込むと、EXCELで開くことができ、ekspertはエラーを出して終わりです。
while constructは知りませんでした...。
私の書き方が正しいかどうか、ご確認ください。
 
int init()
{
while(handle<1)
{ 
handle=FileOpen("firstfile.csv",FILE_CSV|FILE_READ|FILE_WRITE,'\t') 
} 

}

 
sanches83:

}

ええ、なぜ聞くのですか、「戦い」でテストできるじゃないですか)。
 
rustein:
ありがとうございます、しかし、それは動作しません、あなたはループを取り除くために構成を提案することができます if(IsTesting()==true || IsOptimization()==true)


ループを一切使わず、こんな感じで試してみてください。

double  PR,SL,TP;
PR=NormalizeDouble(Ask,Digits);
SL=NormalizeDouble(PR-StopLoss*Point,Digits);
TP=NormalizeDouble(PR+TakeProfit*Point,Digits);
int Result=0;
Result = OrderSend(Symbol(),OP_BUY,Lots,PR,Slippage,SL,TP,OrderComments,Magic,0,CLR_NONE);
if(Result<=0){
        Print("Ошибка № ",GetLastError()," при открытии бай-ордера. PR = ",PR,"   SL = ",SL,"   TP = ",TP);
}

少なくとも、なぜポーズが開かないのかがわかると思います。

 
costy_:

^^

Many Thanks :)

皆さん、ありがとうございます!修正しました、うまくいきました。

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

 
costy_:
そう、なぜ聞く必要があるかというと、「戦う」ことで確認できるのです )) 。


一般にこれは正しいのですが、これを動作させるためには、ループの前に変数を初期化する必要があります。

handle=0 です。

while(ハンドル<1)
{
handle=FileOpen("firstfile.csv",FILE_CSV|FILE_READ|FILE_WRITE,'\t').FileOpen("firstfile.csv",FILE_CSV|FILE_READ|FILE_WRITE,'\t');
}

まあ、コード実行がループの本体に入り、それを無視しないことを絶対に確認するためなんだけど。

 
drknn:


実際にはその通りなのですが、ループの前に変数が初期化されている必要があります。

handle=0 です。

while(ハンドル<1)
{
handle=FileOpen("firstfile.csv",FILE_CSV|FILE_READ|FILE_WRITE,'\t').FileOpen("firstfile.csv",FILE_CSV|FILE_READ|FILE_WRITE,'\t');
}

これは、コードの実行がループ本体に入り、それを無視しないようにするためです。

ええ、残念ながら私は占い師のようになる必要があり、問題のコードの一部を持つスクリプトを作成し、よくまたはすべてのコードとあなたがエラーを指摘するために容易になります。 コーヒーかすzakAchyVeTso)。
 

皆さん、ちょっと助けてください!!!

モーニングチャネル戦略を使ったEAを書こうとして います。本質はこうだ:EURGBPペアで6時01分に我々は0時から午前6時までの値動きのチャンネルを決定します。2つの保留注文を設定し、トリガーされた保留注文がストッパーで閉じられたら、反対方向の注文をオープンするのです。うまくいかないのは、戦略の2番目の部分です。すなわち、ストップが発動した場合、逆方向の注文を出すことはできません。
ファイル: