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

 
VAM_ 08.06.2010 18:48編集削除

ミュートはどのように行うのですか?白ニーソにドライブ。ツールウィンドウがたくさんあります(33)。EAはありません。真ん中とズップだけでいい。どこから歌っているのかがわからない。お願いですから、助けてください。サービス、イベントがありました。イベントの十字架は何の役にも立たない。まだ歌ってるのかよ、この野郎。

テクノ


ムクドリは七面鳥に座ることができる )))

コードに目を通しましたが、どこにもアラートがありません。どうすればいいのか?
 
VAM_:

コードに目を通しましたが、どこにもアラートがありません。どうすればいいのか?

PlaySound() で確認。
 
異なる関数を呼び出したときに、実行中にグローバルに定義された変数に異なる値を代入すると、それが保存されるようにするには、どうすればよいでしょうか。

ポジションの部分決済のために、グローバルに設定されている変数Partに特定の値を代入し、注文の部分決済を実行する関数にパラメータとして渡す必要があります。この変数は単純な除算器である。つまり、初期値を1とした場合、ロットを1で割って全ポジションをクローズします。取引条件が変わると、この変数に新しい値が入り、例えば1.5や2などになり、ポジションロットをこの数値で割って、部分決済が行われます。パラメータ渡しを 伴う関数呼び出しは、そのままでは次のようになります。

// На глобальном уровне
double Part = 1;                           // на сколько разделить лот для частичного закрытия 
//..........

void ClosePartPosBySelect(double Part)    // Объявление функции
// ... тру-ля-ля ... тело функции ...
ll=NormalizeLot((OrderLots()/Part));      // рассчёт лота внутри функции
// ... дальнейший код ф-ции ...

//--------- Вызов функции частичного закрытия ---------
// Происходит из тела этой функции
void TrailingPositionsTLE(int MAGIC, int CloseMethod, double Part, int LastTrailing)
// таким образом:
if (CloseMethod==1)
            ClosePartPosBySelect(Part);

そのため、この関数が呼ばれたときにもかかわらず ...

TrailingPositionsTLE(561, 1, 2, 1);

...CloseMethod = 1 (パーシャルクロージャー)が設定され、Part = 2 が明示的に指定された場合、この関数はプログラムの途中で指定された Part 値 (例:2) の代わりに、グローバルに設定された初期値 =1 を渡す...。

どうすれば倒せるのか?ありがとうございます...

 
artmedia70: 取引条件が変わると、この変数に新しい値が入り、例えば1.5や2といった値になり、ポジションのロットがこの数値で割られ、パーシャルクロージングが行われます。


さて、取引条件が変わったら、パート変数を変更します。それとも別のEAで持っているのでしょうか? それなら、この変数は常に読み込まれなければなりません。

int init()

{

.....

GlobalVariableSet("Part0",Part)。

.....

}

int start()

{

...

Part=StrToInteger(GlobalVariableGet("Part0"));

...

}

 
Roger:

さて、取引条件が変わったら、パート変数を変更します。それとも別のEAで持っているのでしょうか? それなら、この変数は常に読み込まれなければなりません。

int init()

{

.....

GlobalVariableSet("Part0",Part)。

.....

}

int start()

{

...

Part=StrToInteger(GlobalVariableGet("Part0"));

...

}

いいえ、変数は同じEAにあります。グローバルに定義され、関数はこれを使用できるが、関数内部で値を変更しても、外部関数には返さない。そのため、各機能は初期設定された値を参照します。グローバルレベルで設定しないと、未設定の変数に関数がmateしてしまうのですが...。
 

関数にパラメータで変数を渡す場合、変数は値で渡されます。つまり、関数自体の中で変数を変更しても、上書きされることはないのです。
パラメータ名の前に"&"を入れて、参照渡しを試してみてください。

void simple(string &s){
//                 ^
//       спец сим. & перед именем переменной задает передачу по ссылке, а не по значению
//
}
 
VAM_:

コードに目を通しましたが、どこにもアラートがありません。どうすればいいのか?

イベント」タブで、「許可」のチェックをはずす。

 

プロフェッショナルの皆様、こんにちは。

売りと買いの2つの注文を同時に出すEAを ぜひ作りたい のですが。

そして、一定のポイント(パラメータlim)が経過すると、負け注文がクローズされることになる。

注文が開始されてからの最大価格を下回ると、利益のあるものがクローズされます。

(一種の仮想トレーリングストップ)。

苦し紛れに作成したのですが、うまくいきません...。はたらかない

何かご提案ください

int start()
  {
 
  double 
   max, min;                                            
  int b, s;
   if (Bid>max) max=Bid; 
    if (Ask<min) min=Ask;  
       if (OrdersTotal()>0)
       {                                   
           if ((max-Bid)>=lim*Point) 
           {                   
          OrderSelect(b,SELECT_BY_TICKET);                                  
          b=OrderClose(OrderTicket(),0.1,Bid,3,Blue);
          }
          
          
          if ((Ask-min)>=lim*Point)  
          {         
      OrderSelect(s,SELECT_BY_TICKET); 
      s=OrderClose(OrderTicket(),0.1,Ask,3,Red);
         }
}
else
{
  if (OrdersTotal()<1)
  {
 b=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",5,0);
      
 s=OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",5,0); 
    }                           
   }
         return;

   return(0);
  }
 
artmedia70:
実行時にグローバルに定義された変数に異なる値を代入し、異なる関数を呼び出すとそれが保存されるようにするにはどうすればよいでしょうか。

りょうよう

1.値を変更する関数にアンパーサントを追加する。

例)void function( double& Part){}。

を呼び出すと,関数内の値が変更されたときに,新しい値が呼び出した場所に戻ってきます.

2. 関数のパラメータリストから変数を削除する。変数はグローバルに定義されているので、パラメータとして渡さずにコードのどの場所でもその値を変更することができる...

しかし、混乱を避けるために、この変数が何であるかを考えないように、1番目の変形が良い、このようなグローバルに定義された変数は、1つの関数内で、複数存在することができるので...。


投稿をちらっと見たら、もう答えが出てる...。

 
artmedia70:
が、関数内部で変更されたその値は、外部には返されない。


機能そのものを表示する。

void ClosePartPosBySelect(double Part)の場合、以下のように変更します。

void ClosePartPosBySelect()