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

 

プロは通り過ぎない、あなたの力を貸してください。ボットが売りポジションを開いている場合、このポジションは以下でクローズされる必要があります。まず売りポジションがクローズし、次に買いポジションがオープンし、オープンポジションの数が1になるような、注文実行キューのようなものを作るにはどうしたらいいでしょうか。

OrderSend(Symbol(),OP_BUY,Lots,Ask,4,0,0,"",0,0,Green);
    for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if(OrderType()==OP_SELL)   // long position is opened
           {
                 OrderClose(OrderTicket(),OrderLots(),Ask,4,Violet); // close position
                }
    }
 
 
eddy:
バッファにのみ 設定され、外部変数には設定されないということです

ということで、このindicator_colorNを使用します。

 
eddy:
外部変数ではなく、バッファにのみ 設定されるということです
MQLでは無理です。でも必要ならもちろんOK))))
 
alsu:
MQLではできない。しかし、VERY、VERY必要なら、もちろん可能です)))

何が必要なのかさえわからない...

eddyのニーズは、きっとMQLで解決できるはずだ

 
sergeev:

何が必要なのかさえわからない...

eddyのニーズはMQLで解決しているはずです

いや、わかったよ...彼はインジケータ コードでインジケータバッファから レンダリングカラーを取得する必要があるんだ(そうだろ、eddy?)私の知る限り、MQLでは不可能です。
 
alsu:
いや、わかったよ...彼は、インジケータコードでプログラム的にインジケータバッファから描画色を取得する必要があるんだ(そうだろ、eddy?)私の知る限り、これはMQLでは不可能です。
可能です。
は、indicator_colorNパラメータを使用するだけです。 同じ変数と言えるでしょう。
 
sergeev:

パラメータindicator_colorNを使用するだけです。これは同じ変数といえる。 。

noooooo。

線を引く インジケータがあるとします。このインジケータで円を描きたいとします。しかし、指標線が緑なら緑、赤なら赤にしたいのです。

 

プログラマー諸氏、すべての注文を正しくクローズする方法を教えてください。以下は、解決すべき問題と、アドバイスされた内容です。全体として、注文を閉じることと、取引を禁止するフラグを設定すること以外はすべてうまくいきました。

皆さんの中にも経験豊富なプログラマーがいらっしゃると思います。
1) С+=注文(1)の利益 + 注文(2)の利益 +... + 注文(n)の利益 - 現在の時間のすべてのオープンオーダーの合計の利益 私のエキスパートアドバイザーで次の条件を書くのを助けてください。
2) C-=(c+)loss on order(1)+loss on order(2)+...+loss on order(n) - 現在の時点におけるすべてのオープンオーダーの損失の合計値です。
3) X=(c+)/(c-) - 現在の損益率
4) 自己資本(S)に損益率(X)を掛けたものが、指定した設定値(K)より高ければ、取引に問題はない。(If S*X>K, OK)
5) 利益/損失(X)の比率を掛けた資本(S)が定義した目標(K)より小さい場合、現在の相場でのすべてのオープンオーダーは閉じられ、エキスパートアドバイザーは再び手動で有効になるまで無効化されることになります。(S*X<K、全注文をクローズしてオフ)

これで損切り対策は万全のような気がします。

こんな感じです。
double CalculateProfitTotal()
{
double Result = 0;
for(int i = 0; i < OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderProfit() > 0)
Result = Result + OrderProfit();
return(Result;
} と、損益計算する二つの関数作ってみましょう。}

double CalculateLossTotal()
{
double Result = 0;
for(int i = 0; i < OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderProfit() < 0)
Result = Result + MathAbs(OrderProfit());
return(Result;
} ・・・の順で、(i)は(i)と(i)を足した値。

start()関数の中に、条件を書きます。
例:
X = CalculateProfitTotal() / CalculateLossTotal();
if(AccountEquity() * X < K)
{
//ここで全ての注文を決済し
//取引を禁止するフラグを設定
return(0);
}

 
alsu:

例えば、インジケータとして円を描きたいとします。しかし、指標となる線が緑色であれば緑色にしたい

ということで、青色でオブジェクトを作りたい)

sergeev さん、indicator_color1ってカラー変数なんですね

理由: