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

 

グッドアフタヌーン質問は以下の通りです。S.K .さんのMQL4本の 取引操作」の項に、宣言価格が他の保留注文より高い保留注文 (modifyorderprice.mq4)を 次の ように修正 する簡単なスクリプトの 例があります。

//--------------------------------------------------------------------
// modifyorderprice.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
int start()                                     // Спец.функция start
  {
   int Tral=10;                                 // Дист. приближения
   string Symb=Symbol();                        // Финанс. инструмент
   double Dist=1000000.0;                       // Предустановка
   double Win_Price=WindowPriceOnDropped();     // Здесь брошен скрипт
//--------------------------------------------------------------- 2 --
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         //------------------------------------------------------ 3 --
         if (OrderSymbol()!= Symb) continue;    // Не наш фин.инструм.
         if (OrderType()<2) continue;           // Рыночный ордер  
         //------------------------------------------------------ 4 --
         if(NormalizeDouble(MathAbs(OrderOpenPrice()-Win_Price),Digits)
            < NormalizeDouble(Dist,Digits))     // Выбираем ближайший
           {
            Dist=MathAbs(OrderOpenPrice()-Win_Price);// Новое значение
            int    Tip   =OrderType();          // Тип выбранного орд.
            int    Ticket=OrderTicket();        // Номер выбранн. орд.
            double Price =OrderOpenPrice();     // Цена выбранн. орд.
            double SL    =OrderStopLoss();      // SL выбранного орд.
            double TP    =OrderTakeProfit();    // TP выбранного орд.
           }                                    // Конец if
        }                                       // Конец анализа ордера
     }                                          // Конец перебора орд.
//--------------------------------------------------------------- 5 --
   if (Tip==0)                                  // Если отложенных нет
     {
      Alert("По ",Symb," отложенных ордеров нет");
      return;                                   // Выход из программы
     }
//--------------------------------------------------------------- 6 --
   while(true)                                  // Цикл закрытия орд.
     {
あるいは、このスクリプトのブロック5-6にエラーがあります。
if (Tip==0)                                  // Если отложенных нет
の形式でなければならない。
if (Tip<2)                                  // Если отложенных нет
すべての非保留(成行)注文のタイプは0または1であり、すなわち2未満であるため です。

それとも私が何か勘違いしているのでしょうか。

質問:私が何か誤解しているのなら、それは何なのか、はっきりさせてください。

ご回答を よろしくお願いします。

 
7777877:

こんにちは。次のような疑問があります。S.K.さんの MQL4本の 「取引操作」の項に、宣言した価格が他の保留注文の価格よりもスクリプトを取り付けた地点に近い保留注文を修正する 簡単なスクリプトの 例があります(

あるいは、このスクリプトのブロック5-6にエラーがあります。(私が見る限り)

保留でない(成行)注文のすべてのタイプは0または1、すなわち2未満であるので、

この

ようになる

はず

です。

あるいは私は何かを誤解していました。

質問:明確にしてください:私が 何かを 誤解していた場合、具体的に 何を

回答を事前にありがとう

ございます

しっかし大きな文字で書かないでください。)

ということと質問する前に...MetaEditorでBACKGROUNDを読んでみましたか?全部ですか...とりあえず...種類とかそういうバカな質問をしないように...。

===

OrderSend() 関数の操作の種類。 以下の値のいずれかを指定することができる。

定数 価値 商品説明
OP_BUY 0 購入
OP_SELL 1 販売する
OP_BUYLIMIT 2 買い指値注文
OP_SELLLIMIT 3 売り指値注文の保留
OP_BUYSTOP 4 買付停止注文の保留
OP_SELLSTOP 5 売り停止注文の保留
 

が、タイプに関しては、何も問題はないのですが...。正確に==0であるべきである...

というのも、第3ブロックでは

      if (OrderType()<2) continue;           // Рыночный ордер  

マーケットオーダーがスキップされる...

===

で、もし保留中の注文が注文リストで見つかったら、TYPE変数は0にはなりません。

---

 

こんにちは。ヒントを教えてください。

例えば、MAがLevel_RとLevel_Sを通過する基準を持っています。

int Criterion;
double MA_1=iMA(......,0);
double MA_2=iMA(......,1);
double MA_3=iMA(......,2);
if(MA_1 > Level_S_1 && Ma_2 <= Level_S_2 MA_3 <= Level_S_3) Criterion=1;
if(MA_1 > Level_R_1 && Ma_2 <= Level_R_2 MA_3 <= Level_R_3) Criterion=2;

質問:基準値を記憶して、新しいパスが発生するまで1または2(パスに依存)の値を保持し、その後のティックでリセットされないようにするにはどうすればよいのでしょうか。

 
Startなどの関数の外に変数定義を置くと...。グローバル変数 に...
 
Aleksander:
Startなどの関数の外に変数定義を置くと...。グローバル変数に...
試してみましたが、悪態をつかれたり...。私の無能さをほのめかしながら。
 
テキストが小さい場合は、テキスト全体を掲載します。
 
int Criterion, Crit;
int start()
 {
  Crit= Fun_Criterion( Criterion); 

  switch(Crit)
   {
   /************/
   }
return(0);
 }

Fun_Criterion(int Criterion)
 {
  if(MA_1 > Level_S_1 && Ma_2 <= Level_S_2 MA_3 <= Level_S_3) Criterion=1;
  if(MA_1 < Level_R_1 && Ma_2 >= Level_R_2 MA_3 >= Level_R_3) Criterion=2;

  return(Criterion);
 }
 

なぜ仲介者がいるのか、FUNの機能とは?

int Criterion;
int start() {
  Fun_Criterion(); 

  switch( Criterion)
   {
   /************/
   }
  return(0);
}
//-----------------------------
void Fun_Criterion() {
  if(MA_1 > Level_S_1 && Ma_2 <= Level_S_2 &&  MA_3 <= Level_S_3) Criterion=1;
  if(MA_1 < Level_R_1 && Ma_2 >= Level_R_2 &&  MA_3 >= Level_R_3) Criterion=2;
 }

そして&&の位置がずれている...。

 
私の見方では、TRANSFERABLE PARAMETER)))でしたが、これがないとどうしようもないのです)))。ありがとうございます、修正したら使えるようになりました。