[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 463

 

みなさん、こんにちは。

Expert Advisor に、(注文がクローズされた後に)注文が開いていたことを記憶させる方法を教えてください。グローバルな論理変数は適していますが、1つの機器にしか使えません。1つのターミナルに複数のシンボルがあると、変数が変わってしまい、期待通りに動作しないのですが。

 
demlin:

みなさん、こんにちは。

Expert Advisorに、注文を出した事実があったことを(注文を閉じた後に)記憶させる方法を教えてください。グローバルな論理変数は適していますが、1つの機器にしか使えません。1つのターミナルに複数のシンボルがあると、変数が変わってしまい、期待通りに動作しないのですが。


そのため、各ツールは独自のグローバル変数を持って います)。
 
tol64:

そのため、各ツールは独自のグローバル変数を持っています)。
それは理解できるのですが、では、どうすればプログラムが名前を生成してくれるのでしょうか?手動で60個の変数をコードに詰め込むのは嫌なんです))
 

みなさん、こんにちは。

難航しています・・・。ずっとEUR/USDのショート注文を開こうとしていたのですが、MAの手前で一度ショートを開こうとして、前のローソクの終値がMAの下にあったのに注文が開かず、今テスターで作業していたら、いい感じに注文が開いたのですが、どうしたらいいでしょうか?

どこのコードのエラーです - 私は理解していない、私は具体的に注文が開かれていない場合、条件を挿入している - それを10回開こうとすると、それは助けるように見えることはありませんが、初心者を助けてください...

void CheckForOpensell()
  {
   double maopensell;
   int    ticketsell=0;


//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   maopensell=iMA(NULL,TF,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>maopensell && Close[1]<maopensell)
   for (int it=1; it<=10; it++)
    {
      while (!IsTradeAllowed()) Sleep(5000); 
      RefreshRates();
      ticketsell=OrderSend(Symbol(),OP_SELL,LotsOptimizedsell(),Bid,3,0,0," MA Sell M"+TF,MAGICMA,0,Red);
      if(ticketsell>0)
         {
          OrderModify (ticketsell,OrderOpenPrice(),Bid+StopLoss*Point,Bid-TakeProfit*Point,0,Gold);
          return;  
         }
      
      else
       {
        int err=GetLastError();
        if (err==128 || err==142 || err==143 || err==144) 
         {
           Sleep(2000);
           Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
           continue;
         }
        if (err==146) while (IsTradeContextBusy()) Sleep(2000);
        Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
        if (err==2 || err==64 || err==65 || err==4110 || err==4111) break;
        Sleep(2000);
       }
      
     }
  }
 
Abylhat:

みなさん、こんにちは。

難航しています・・・。今日EUR/USDでショートを開く条件(前のローソク足の始値がMAより高く、終値がMAより低い)があったのですが、注文が開きません。テスターでこの部分を開いてみると、注文は見事に開きました。

注文が開いてない場合、10回ほど開いてみましたが、ダメでした、初心者を助けてください ...


このあたりに問題がある可能性が高いです

 if(Volume[0]>1) return;

このような条件の信号はスキップされることがある。しかし、テスターでは確実に動作します。

テスターでは、ティックスキップはありません

 
Vinin:


この部分に問題がある可能性が非常に高いです

この条件の信号は見逃される可能性があります。しかし、テスターでは間違いなく動作します。

テスターでティックスキップが発生しない


ありがとうございます!条件を変えて設定する方法を教えてください。
 
Abylhat:

ありがとうございます!条件を変えて設定する方法を教えてください。

int start(){
   static int prevtime=0;
   if (Time[0]==prevtime) return(0);
   prevtime=Time[0];

//
   return(0);
}
Time[0]の代わりにTimeCurrent() を使用することができます。
 
demlin:

みなさん、こんにちは。

Expert Advisor に、(注文がクローズされた後に)注文が開いていたことを記憶させる方法を教えてください。グローバルな論理変数は適していますが、1つの機器にしか使えません。1つのターミナルに複数のシンボルがある場合、変数が変化してしまい、期待通りに動作しないことがあります。

では、Expert Advisorは一度に複数のシンボルを取引するのでしょうか?

1つの商品しか取引しない場合は、グローバル変数の 名前にExpert Advisorのマジックナンバーを追加することができます。

 
rlx:

Expert Advisorは一度に複数の楽器を取引するのですね。

1つしか取引しない場合は、Expert Advisor の Magic 番号をグローバル変数名に追加することができます。

Expert Advisorは、複数の商品を同時に取引することができます。
 
Vinin:

Time[0]の代わりにTimeCurrent()を使用することができます。

ありがとうございます、適用してテストしてみます...。