MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1946

 
Alexey Viktorov #:

すべてのインジケータは同じスレッドで動作します。そのため、各指標はある程度のCPUリソースを消費する。同じパラメータで100500のインジケータを入れて、端末はどうなるのか?300gのジャガイモなら20分もあれば十分ですが、袋いっぱいのジャガイモを肩に担ぐことになります。いかがでしょうか。

なるほど。説明ありがとうございました。
 

このスタイルで描画されたインジケータサブウィンドウをコドベースのどこかで見たことがあるのですが、教えていただけますか?

見つからない


 
makssub #:

こんにちは。ベイルについて読んだことがある。足し算も引き算もできない
マネーマネジメントについては、やっていないので何とも言えません。
最新版を添付します。
Order1(2) 選択された注文の利益
Order1(3) 選択された注文のロット

コードを理解することができなかった。

解説してみます。必要な注文のチケットがわかるといいですね、とても楽になります。その条件とは利益が0より大きい利益注文があり、利益が0より小さく利益より大きい損失注文があり、損失注文の一部決済の条件があります。

一般に、注文の方向性が異なる場合は、何も考えずにOrderCloseByで クローズすることができます。小さい方の損切り注文は、小さい方の利益確定注文と同じように決済されます。チケットは2枚でいいんです。

もっと複雑にして、両方の注文のOrderProfit() (これはお金です)とOrderLots() (これはロット単位の数量です)を取得することができます。利益と損失の比率を計算し、利益の出ている注文とこの部分を損失の出ている注文のロットで決済します。注文の利益とロットを取得する前に、まずOrderSelectを選択する必要があります。

// ticket1 тикет прибыльного ордера, ticket2 убыточного

bool sel1=OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
double profit1=OrderProfit();
double  Lts1=OrderLots();
double price1=0; if(OrderType()==0)price1=Bid; else price1=Ask;

bool sel2=OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
double profit2=OrderProfit();                     // profit1 < profit2 можно условием впереди поставить
double  Lts2=OrderLots();
double price2=0; if(OrderType()==0)price2=Bid; else price2=Ask;

double ratio=fabs(profit1/profit2); // или если ratio<1, и берем модуль, у нас один профит меньше нуля
double lotsl=Lts2*ratio;

 Alert("Попытка закрыть прибыльный ордер тикет1 ",ticket1,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
 bool    Ans1=OrderClose(ticket1,Lts1,price1,2);      // Закрытие прибыльного ордера
         if(Ans1==true) // Получилось :)
         Alert("Закрыт ордер тикет1 ",ticket1,". профит1 ",profit1); 
else Alert(" Ошибка при закрытии ордера  тикет1",ticket1," Код ошибки ",GetLastError());

Alert("Попытка закрыть часть ордера тикет2 ",ticket2,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
bool     Ans2=OrderClose(ticket2,lotsl,price2,2);      // Закрытие убыточного ордера частично
         if(Ans2==true) // Получилось :)
         Alert("Закрыт частично ордер тикет2 ",ticket2,". профит2 ",profit2); 
else Alert(" Ошибка при закрытии ордера  тикет2",ticket2," Код ошибки ",GetLastError());

 

  
 


Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
  • book.mql4.com
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
 
Vitaly Muzichenko #:

このスタイルで描画されたインジケータサブウィンドウをコドベースのどこかで見たことがあるのですが、教えていただけますか?

見つからない。


Scriptorの インジケータを見る

Scriptor
Scriptor
  • 2019.02.10
  • www.mql5.com
Профиль трейдера
 
Artyom Trishkin #:

Scriptorの インジケータを参照してください。

ありがとう、見つけたけど、ちょっと違う、1列だけ

 
Vitaly Muzichenko #:

ありがとうございます!見つけたのですが、ちょっと違っていて、1列分しかないんです。

列も何列かあると思います。

 
Artyom Trishkin #:

数列もあると思います。

1500以上のコードがありますが、残念ながら見逃してしまったようです。

 
Vitaly Muzichenko #:

ありがとうございます、見つかりましたが、1列だけちょっと違いますね。

Vitalyさんには驚かされますね。このような指標はすべて、DRAW_ARROWを適切なコードで構築することが基本である。図中の四角は、コード167です。

      ObjectSetInteger(0, up_arrow, OBJPROP_ARROWCODE, 167);    // установим код стрелки 

そして、シリーズのレベルは、アルチョムの猫や猫の希望で設定されています。単位は整数でも10分の1でもかまいません。

始めて、うまくいかないことを聞く。

 
Vitaly Muzichenko #:

このスタイルで描画されたインジケータサブウィンドウをコドベースのどこかで見たことがあるのですが、教えていただけますか?

見つからない


DRAW_ARROWがダメなのか?

1色で描画する場合は8個、2色で描画する場合は16個のバッファを使用します。

またはDRAW_COLOR_LINEで太い線が描けます。

感覚としては、線は常に同じレベル(最初の1秒2秒など)で、色だけが変化している。

 
Alexey Viktorov #:

Vitalyさんには驚かされますね。このようなインジケータはすべてDRAW_ARROWの描画に対応するコードに基づいています。写真では、四角がコード167になっていますが

そして、列のレベルはArtyomの猫や猫の希望で設定します。単位は整数でも10分の1でもかまいません。

始めて、うまくいかないことを聞く。

数列で均等になるように下からインデントする原理が理解できない

そこがスタートラインに立てない