どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 871

 
//-------Пример(мой) приказа на открытие позиции с привязкой закрытия ----------------------------------------------------- 
                                                      
                                                      //Локальная переменная, открывающая ордер БАЙ
   int OrdBuy_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point));
   
        //-------Тогда закрытие именно для этого приказа может быть таким:-----------------------------------------------------
    
    if (OrdBuy_1()==true)                              //Если был открыт ордер №1, то...
     {                                                 //...выполнить следующее:...
                                                       //...при условии, что Желтая выше красной, с сужением(условие1)...
                                                       //...и есть верхний перелом Средней (условие2)...
                                                       //...ИЛИ при условии, что Желтая выше красной, с расширением(условие1а)...
                                                       //...и есть верхний перелом Боллинджера (условие2а)... 
     if ((Yellow_0>Red_0) && (Yellow_0-Red_0)<(Yellow_1-Red_1) && (MA_2 < MA_1 && MA_1 > MA_0) || (Yellow_0>Red_0) && (Yellow_0-Red_0)>(Yellow_1-Red_1) && (MB_2 < MB_1 && MB_1 > MB_0))
        {                              
       bool Ans=OrderClose(OrdBuy_1,Lots,Bid,0);       //...закрыть ордер №1 по цене Bid (лок.переменная)и выдать сообщение                                                      
         Alert("Попытка закрыть ордер БАЙ лотом("Lots"), с ценой открытия("Ask"). Ожидание ответа..");
        }
      }
   if (Ans==true)                                     // Если получилось,... 
        {                                             //... выдать сообщение
         Alert ("Закрыт ордер БАЙ лотом("Lots"),с ценой открытия("Ask"), цена закрытия("Bid"));
        }
 
これは、上の投稿に少し手を加えた例です。
 
rapid_minus:

r772ra さんartmedia70 さん わかりやすい説明ありがとうございます。

私の理解では、マジックは主にトレーダーが複数の通貨ペアや口座などで、複数のEAを使い、複数のオープンオーダーをするときに必要になります(そうですよね?)

そうではなく、自分のExpert Advisorが利益を出してくれると思えば、それで十分だと思います。私はまだ、1つの証券会社の1つの口座、1つのペアのために開発しており、1つの注文だけが開いて いる必要があり、この注文の特定の条件が発生したときにのみ 閉じられ、他の注文(この注文の閉鎖後にのみ開くことができる)を閉じるために有効な他の条件は、この注文には有効ではないようにマジシャン(またはオープンポジションの他の識別子)が必要です。

例えば、ある注文は条件(a+b+c+d+d)または(a+d+e)または(f+c+i+c)が現れたときにオープンし、BAYがオープンした条件に応じて、自身の条件に従ってクローズする必要があります。(a+b+c+d)は(f+j+l)、(a+d+e)は(h+l+m+n)、(g+z+i+k)は(p+r+c+t )。

ここでもオーダーループは必要ないようです。何かシンプルで場所を取らないソリューションがあるはずです。私は上記でビジョンを述べましたが、まだ解析まで至っていませんし、論理的なエラーの他に構文的なエラーもあるはずです(括弧が抜けていたり、変数のセットが間違っていたりなど)。

問題視しないでください、助けてください。それがないと動けないんです。感謝

最後のオープンポジションのチケットを決定し、処理する。IMHO - チケット番号を変数に格納するのは、何らかの障害が発生した場合に簡単に失われてしまうので、よくありません。注文を処理するには、まずその注文を選択する必要があります。また、インデックスで選択することも、チケットで選択することも可能です。チケットは正確に把握する必要があります。チケットによる選択が成功した後、このチケットによるポジションがクローズされたかどうかも確認する必要があります。ポジションが1つしかない場合、このサイクルは時間のかかる作業ではありません。しかし、チケットの番号を変数に格納する必要はない。リストの最後の順番を選択することができますが、ソート依存性があり、それを変更することができます(以前、ターミナルにソート依存性があり、その後削除され、再び現れ、再び削除されました) - 再び現れることはないと信じていますか?しないんです。サイクルでは、市場でのポジションは1つだけの反復があります - それはたくさんあるのですか?

バイ・クローズの条件は満たされていますか?
その場合、最後に開いた買いポジションのチケットを探します
ノーなら、最初に戻る。
チケットが見つかったら、与えられた状況で必要なことを順番に実行する
それ以外の場合は、最初に戻る

 
rapid_minus:
これは、上の投稿に少し手を加えた例です。

OrdBuy_1()関数とは何ですか?変数ではなく、関数です。この構成は完全に間違っている。関数は内部ではなく、他の関数の外部で定義されます。

 
artmedia70:

最後のオープンポジションのチケットを決定し、処理する。IMHO - チケット番号を変数に格納するのは、どんな障害でも簡単に失われてしまうので、よくありません。注文を扱うには、まずその注文を選択する必要があります。また、インデックスで選択することも、チケットで選択することも可能です。チケットは正確に把握する必要があります。チケットによる選択が成功した後、このチケットによるポジションがクローズされたかどうかも確認する必要があります。ポジションが1つしかない場合、このサイクルは時間のかかる作業ではありません。しかし、チケットの番号を変数に格納する必要はない。リストの最後の順番を選択することができますが、ソート依存性があり、それを変更することができます(以前、ターミナルにソート依存性があり、その後削除され、再び現れ、再び削除されました) - 再び現れることはないと信じているのでしょうか?しないんです。サイクルでは、市場でのポジションは1つだけの反復があります - それはたくさんあるのですか?

バイ・クローズの条件は満たされていますか?
その場合、最後に開いた買いポジションのチケットを探します
ノーなら、最初に戻る。
チケットが見つかったら、与えられた状況で必要なことを順番に実行する
それ以外の場合は、最初に戻る

ありがとうございます!やり直そうと思います。それでも、あなたの説明に従ってやり直すつもりですが、上記の例で私の間違いを繰り返さないように声をかけてください。

感謝

 
rapid_minus:

ありがとうございます!やり直そうと思います。それでも、あなたの説明に従ってやり直すつもりですが、上記の例で私の間違いを繰り返さないように声をかけてください。

感謝

もう行かなくちゃ、時間がないんだ。簡単に説明すると、変数がintである場合、なぜboolとしてチェックするのでしょうか?ストップロスとテイクプロフィットの値を正規化する必要があります。それ以上は調べませんでした。
 

トレンドラインをいじくりまわして、取得の仕方を覚えました。しかし、テスターでの最適化の際にグラフィカルオブジェクトが動作しないことが判明しました。

どうしたらいいのでしょうか?インジケーターで入手する価値はあるのでしょうか?

Buffer[i]= ObjectGetValueByTime(chart_ID,name,Time[1],sub_window);

このままでは最適化がうまくいかないのでは?

 
artmedia70:
もう行かなくちゃ、時間がないんだ。簡単に言うと、変数がintである場合、なぜboolとしてチェックするのでしょうか?ストップロスとテイクプロフィットの値を正規化する必要があります。それ以上は調べませんでした。

まあ、完全に混乱しています。OrdBuy_1()は、この関数の上の1番の条件でBAYをオープンする関数です。ただ、注文の開始価格を返すので、おそらく正しい型はintではなく doubleでしょう。そして、私が理解する限り、どの関数にも挿入していません。それは、int start()の後に、必要なすべての指標の値を抽出し、現在の市場の状況を分析し、別々に配置されています(私は間違っているでしょうか)。

また、ストップ&テイクをノーマライズする方法、もっと言えば、全く設定しない方法はありますか?

それと、小切手の件がよくわからない。チュートリアルを誤解していたようです - "bool OrderClose (int ticket, double lots, double price, int slippage, color Color=CLR_NONE)Market orderを閉じる関数".チェックとは何ですか?

とにかく、進めば進むほどダサくなる :(

 
Forexman77:

トレンドラインをいじくりまわして、取得の仕方を覚えました。しかし、テスターでの最適化の際にグラフィカルオブジェクトが動作しないことが判明しました。

どうしたらいいのでしょうか?インジケーターで入手する価値はあるのでしょうか?

このままでは最適化がうまくいかないのでは?

実線の代わりに仮想線を計算する。
 
Forexman77:

トレンドラインをいじくりまわして、取得の仕方を覚えました。しかし、テスターでの最適化の際にグラフィカルオブジェクトが動作しないことが判明しました。

どうしたらいいのでしょうか?インジケーターで入手する価値はあるのでしょうか?

そのような形で最適化が行われるのでしょうか?

いいえ、そうではありません。グラフィックはビジュアライゼーション・モードでのみ表示されます。