初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 587

 
Karputov Vladimir:
Dream11 です。

こんにちは、ここで問題です...トレーリングストップ機能があるのですが...

1つのオーダーではなく、無制限にオーダーを検索するように変更する方法 ...


私も持っていますが、何でもかんでもトラブってしまいます。
extern int             TrailingStep = 10;     //Шаг трейлинга
extern int             TrailingStop = 30;     //Трейлинг стоп
//+------------------------------------------------------------------+
//Трейлинг стоп
void Trailing()
{
 int err = GetLastError();
 err = 0;
 
 for(int i = OrdersTotal()-1; i>=0; i--)
 {
  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  {
   if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
   {
    if(OrderType() == OP_BUY)
    {     
     if(Ask - OrderOpenPrice() > TrailingStop*Point)
     {
      if(OrderStopLoss() < Ask - (TrailingStep + TrailingStop)*Point)
      {
       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask - TrailingStop*Point,Digits),OrderTakeProfit(),0,clrGreen))
       {
        err = GetLastError();
        if(err != 0) Print("Ошибка модификации ордера № ",OrderTicket()," на покупку! Код ошибки: ",err,".");
       }
      }
     }
    }
    if(OrderType() == OP_SELL)
    {
     if(OrderOpenPrice() - Bid > TrailingStop*Point)
     {
      if(OrderStopLoss() > Bid + (TrailingStep + TrailingStop)*Point)
      {
       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid + TrailingStop*Point,Digits),OrderTakeProfit(),0,clrRed))
       {
        err = GetLastError();
        if(err != 0) Print("Ошибка модификации ордера № ",OrderTicket()," на продажу! Код ошибки: ",err,".");
       }
      }
     }
    }
   }
  }
 }
}
//+------------------------------------------------------------------+
 
barudkinarseniy:
こんなの持ってるんだ、何もかも台無しだ。
ほとんど同じです。もしかしたら、呼び出す場所が違うかもしれません。
 
Alexey Viktorov:
OnTimer()からはできないのでしょうか?

タイマーでやっています。もうわかったよ、ありがとう。ただ、チャートを更新するために、各タイムループでChartRedraw関数を 追加する必要があったんだ。くっそー、mql4の後にmql5で色々複雑化させやがって、でもこれで良かったのかも...。

 
もう一つの質問ですが、date-time変数(datetime型)を1970年からの秒数のNUMBERに変換するにはどうしたらよいでしょうか?というのも、時間を普通の整数に等しくすると、このint-variableは確かにこの秒数に等しくなりますが、 型変換によるデータ損失の可能性」という警告が出て、ちょっと困るのですが、何か解決する方法はないでしょうか?

 
loleg1991:
もう一つの質問ですが、date-time変数(datetime型)を1970年からの秒数のNUMBERに変換するにはどうしたらよいでしょうか?というのも、通常の整数の時間値に等化すると、このint-variableは確かにこの秒数に等しくなりますが、 型変換によるデータ損失の可能性」という警告が出て、ちょっと困るんですが、何か解決方法はないでしょうか?

ドキュメントの「数値の型変換」を読む
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
もう一つの質問ですが、date-time変数(datetime型)を1970年からの秒数のNUMBERに変換するにはどうしたらよいでしょうか?というのも、通常の整数の時間値に等化すると、このint-variableは本当にこの秒数に等しくなりますが、 型変換によるデータ損失の可能性」という警告が出て、ちょっと迷惑なんですが、何か解決する方法はないでしょうか?

datetimeは秒数

https://www.mql5.com/ru/docs/basis/types/integer/datetime

.

https://www.mql5.com/ru/docs/convert/stringtotime

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип datetime - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
もう一つの質問ですが、date-time変数(datetime型)を1970年以降の秒数のNUMBERに変換するにはどうしたらよいのでしょうか?というのも、通常の整数値の時間と等しくすると、このint-variableは本当にこの秒数に等しくなりますが、 型変換によるデータ損失の可能性」という警告が出て、ちょっと困るんですが、何か解決方法はないでしょうか?

日付ではなく、秒数という意味であれば、明示的にlong型に変換してください。
 
Alexey Kozitsyn:
もし、秒数は表示するが、日付は表示しないということであれば、明示的にlong型にする。
はい、ディスプレイのことです、ありがとうございます、助かりました。
 
loleg1991:
はい、ディスプレイのことです、ありがとうございます、助かりました。
どういたしまして)
 

エキスパートアドバイザーで、ボタンやトグルスイッチなどのオブジェクトをチャートに追加することは可能でしょうか。また、可能な場合はどのように追加するのでしょうか。

理由: