[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 123

 
お世話になります、OrdersTotal()OrdersHistoryTotal() に置き換えてみました。うまくいった。
 

私よりmql4を理解している方、よろしくお願いします。質問は3つあります。

1.まずはダブル定数についてiMa、マスク、Moving Average/は 皆知っている。値のマッピングが正しくない。

extern string  MA1="";
extern string  MA2="";
extern string  MA3="";
string com;


double MA1 = iMA(NULL,PERIOD_M15,9,0,0,0);
double MA2 = iMA(NULL,PERIOD_M15,15,0,0,0);
double MA3 = iMA(NULL,PERIOD_M15,21,0,0,0);

if (MA1>MA2 && MA1!=MA2 && MA1>MA3 && MA1!=MA3 ) com="значение1";
if (MA1<MA2 && MA1==MA2 && MA1<MA3 && MA3!=MA3 ) com="значение2";

そのため、常に値は=値1となる。コードは頑なに != (not equal) を理解しようとしません。

2.質問 /オープニングサーチクロージング/.

プログラムに求めるものが、うまくいかない。

1.条件チェック(true ; false)

2.そのような命令があれば開けないし、命令がなければ開ける。OrderComment()の 条件に基づいて開いています。

3.確認 中 X または Y イベントが発生したら、閉じる。X-(例えば、別の信号iMA1>iMA2、Y-別の信号iMA2>iMA3)。

そうやってやっても何も出てきません。

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)
{
   for (int i=1;i<=OrdersTotal(); i++)       
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);
            }
           }
       } 
}

また、閉じ方は、どこに挿入するのかがわかりません。

3.オフセット(int shift)について質問です。

iMAの第2グループでは、私は3)何のために戻って相対的な現在のバーをシフトするので、ときに上記の信号が、各バーに繰り返し注文を開くことはありません。しかし、なぜかシフトが起きない。

double MA1 = iMA(NULL,PERIOD_M15,9,0,0,0);
double MA2 = iMA(NULL,PERIOD_M15,15,0,0,0);
double MA3 = iMA(NULL,PERIOD_M15,21,0,0,0);

double MA4 = iMA(NULL,PERIOD_M15,9,0,0,3);
double MA5 = iMA(NULL,PERIOD_M15,15,0,0,3);
double MA6 = iMA(NULL,PERIOD_M15,21,0,0,3);

知識のある方よろしくお願いします。使い方がわからない。インターネット上のどこに同様の実装があるのかわかりません。

 
dertop:

私よりmql4を理解している方、よろしくお願いします。質問は3つあります。

1.最初は定倍で。

2.閉じ方 どこに入れたらいいのか全く理解できない。

3.オフセット(int shift)について質問です。

1. https://www.mql5.com/ru/articles/1561

2. if (クローズ条件) OrderClose(...)

3.このシフトが具体的にどのようなもので、誰をシフトさせるのかを見てみましょう。
 
ilunga:

1. https://www.mql5.com/ru/articles/1561

2. if (終了条件) OrderClose(...)

3.このシフトが具体的にどのようなもので、誰がシフトするのかを見る


このような迅速なご回答をいただき、誠にありがとうございました。

1.について はい、わかりました、そこを掘ります。

2について。if (closing conditions) OrderClose(...) (なくてもクリア) でも、if, what for where, why で混乱 しました.........。

間違っていたら訂正してください...。

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // а вот тут проблемы кто за чем идёт и куда вставить условие закрытие отдельно за телом всего условия (ma1;ma2 и тд), или там где OrderSelect()
            }
           }
       } 
}

指標バッファから 取得した値のインデックス(現在のバーから指定した期間分だけ後ろにシフト)。 mql4ヘルプより

 
dertop:


このような迅速なご回答をいただき、誠にありがとうございました。

2で。if (closing conditions) OrderClose(...) (これはなくても理解できる) しかし、if, what for where where and whyで混乱している...。

間違っていたら訂正してください...。


if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // а вот тут пока написано следующее: для каждого из ордеров у которого мы сюда зашли мы поставим еще один ордер
            }
           }
       } 
}
 
ilunga:

すみません、条件がすでに与えられているのに、なぜ不等式をチェックするのですか!これでは、条件を読み取るのも、それを満たすのも遅くなってしまいます

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)//MA1!=MA2 && и && MA2!=MA3 не нужны, т.к. в предыдущих сравнениях
                                                          //равенство ухе исключено! Так что нужно так:
if (MA1>MA2 && MA1<MA3 && MA2>MA3)
 
borilunad:

すみません、条件がすでに与えられているのに、なぜ不等式をチェックするのですか!これでは、条件を読み取るのも、それを満たすのも遅くなってしまいます


何かおかしいぞ。

if (MA1>MA2 && MA1<MA3 && MA2>MA3)

MA1>MA2、MA2>MA3となり、MA1<MA3となる。

特に、十分であるため

if (MA1>MA2 && MA2>MA3)
 
borilunad:

すみません、条件がすでに与えられているのに、なぜ不等式をチェックするのですか!これでは、条件を読み取るのも、それを満たすのも遅くなってしまいます


すみません、ちょっと見逃してました、最初は気にしてなかったんです。この計算は4本のMAに対して行われており、MA1>MA2の時やMA3=MA4の時もあります(このようにストラテジーを構築しているのでチェックが必要です)。

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2<MA3 && MA2!=MA3 && MA3<MA4 && MA3!=MA4)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
                else
                {
                if (OrderComment()!="значение1")                                                         // если такого ордера нету
                   {
                   OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // тогда открываем
                   }
                }
         if (MA1<MA2 && MA1!=MA2 && MA1>MA3 && MA1!=MA3 && MA3>MA4 && MA3!=MA4)                          // если true новый сигнал
             {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,CLR_NONE);               // тогда закрываем
             }

           }
       } 
}

こうですか?

 
Vinin:


何かおかしいぞ。

MA1>MA2、MA2>MA3となり、MA1<MA3となる。


ああ、すみません、初めてフォーラムに書き込んで、混乱しました。最初にコピーペーストして、手書きにしようと思ったら、混乱してしまった...。が、上の例は正しいのですが...。

MA1>MA2かつMA1<MA3かつMA3<MA4

 

こんにちは。

インジケーターの改造 をお願いします。

私は標準的なピボットを持っている、私は標準的な数式を使用してレベルを計算するインジケータを持ちたいのですが、私が自分で入力したH、L、Cデータを使用しています。

標準のPivotの代わりとして使いたい。