初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 153

 


しかし、問題があります
私はその上にラベルを持っていて、リモート設定によってそれを反応させることができます......。ということで、2-3回設定を変更すると、パネル自体が違う方向に動く!!そして、2-3回タイムフレームを変更すると!!どうしたら、これを解消できるのでしょうか?


a little more information:
Dialog.mqhのCAppDialog::Destroy(const int reason)の行をコメントアウトすると、以下のようになることが判明しました。
if(m_deinit_reason!=WRONG_VALUE)
を返します。
とすると、時間軸の切り替え時にパネルが正常に破壊され、再スタートします。

ファイル:
TradePanel.mq4  15 kb
 

こんにちは。私は、グラフィカルオブジェクトのみで動作するMT4インジケータを作成しており、また、異なる期間で動作する同じインジケータによって作成されたグラフィカルオブジェクトの位置を追跡しています。長期の縦線を手動で移動させると、長期の縦線の新しい位置からのトレンドラインが再描画され、短期の縦線も再描画されます。これらはすべてOnChartEventイベント内で処理されます。問題は、高値期間の垂直線を移動させたときに、低値期間のオブジェクトがすぐに再描画されないことがあるのですが、高値期間で動作するインジケータの垂直線をダブルクリックしたときだけ、再描画されることです。また、より高性能な別のPCでは、この現象はあまり起こりません。オブジェクトを再描画した後のコードで、ChartRedraw()関数を適用しています。

PCのリソース不足で起こるかも?

異なるチャート上でインジケータを動作させ、EventChartCustomを使用して、高い周期で動作するインジケータから2番目のインジケータにカスタムイベントを生成 することを試したいです。もしかしたら、これで動作が速くなるかも?

 

構造体のすべての要素をすばやくゼロにする(クリアする)にはどうしたらいいですか?


構造はグローバルです。ある瞬間には、後で新しいデータを入れるためにクリアにする必要があります。

要素ごとにすべてをゼロに等しくすることができると理解しています。他に方法はないのでしょうか?


構造体ABC{

int a1;

int a2;

int a3;

};

ABC a;

このようなものが必要です

a = 0; // 構造体の全要素がゼロ

 
Sergey Likho:

構造体のすべての要素をすばやくゼロにする(クリアする)にはどうしたらいいですか?


構造はグローバルです。ある瞬間には、後で新しいデータを入れるためにクリアにする必要があります。

要素ごとにすべてをゼロに等しくすることができると理解しています。他に方法はないのでしょうか?


構造体ABC{

int a1;

int a2;

int a3;

};

ABC a;

このようなものが必要です

a = 0; // 構造体の全要素がゼロ

ZeroMemory(a);
 
Nピップス後にトリガーをかけて、価格を追いかけるトレーリングトレードをされている方はいらっしゃいますか?
あるのですが、Nピップス後にトリガーして、ブレークイーブンでストップしてしまうのですが・・・。
直してください、頭がおかしくなりそうです!!!
void TrailingSL()
{
int    er;
if(shagtrala==0) return;
for(int i = 0; i < OrdersTotal(); i++)
  {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()==OP_BUY && NormalizeDouble(Ask-OrderOpenPrice(), Digits) >= NormalizeDouble(shagtrala, Digits) &&
         NormalizeDouble(Ask-OrderStopLoss(), Digits) > NormalizeDouble(lTrailingDistance, Digits))
           {
            er = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss() + (lTrailingDistance * _Point), OrderTakeProfit(),OrderExpiration(),0);
           }
         if(OrderType()==OP_SELL && NormalizeDouble(OrderOpenPrice()-Bid,Digits) >= NormalizeDouble(shagtrala, Digits) &&
         NormalizeDouble(OrderStopLoss()-Bid, Digits) > NormalizeDouble(lTrailingDistance, Digits))
           {
            er = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss() - (lTrailingDistance * _Point), OrderTakeProfit(),OrderExpiration(),0);
           }
        }
     }
  }
return;
}
 
ponochka:
Nピップス後にトリガーして、価格を追いかけるトロールをお持ちの方はいらっしゃいますか?
持っているのですが、Nピップ後に動作し、ブレークイーブンで停止するのですが・・・。
直してください、頭がおかしくなりそうです!!!

ここで、私のトロールが機能する、機能する。

//____________________________________________________________________________________
bool trailingpos(int magic_,int trail_p){
   string sym=Symbol(); bool res = true; double sl,slnew,tpips = trail_p*Point; int i,k=OrdersTotal();
   for(i=0;i<k;i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==sym && OrderMagicNumber()==magic_){
            switch(OrderType()){
               case OP_BUY:
                           slnew = NormalizeDouble(Ask - tpips,Digits);
                           sl = OrderStopLoss();
                           if(OrderOpenPrice() <slnew)
                              if((sl < slnew) || (sl == 0.0)){
                                    if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                                                   {res = false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                           }
                           break;
               case OP_SELL:
                           slnew = NormalizeDouble(Bid + tpips,Digits);
                           sl = OrderStopLoss();
                           if(OrderOpenPrice()> slnew)
                              if((sl > slnew) || sl ==0.0){
                                    if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                                                   {res = false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                           }
                           break;
              }
           }
        }
     }
return(res);}
//____________________________________________________________________________________

関数を呼び出す 2つのパラメータのマジックナンバーとtrawl np

 
Sergey Likho:

構造体のすべての要素をすばやくゼロにする(クリアする)にはどうしたらいいですか?


構造はグローバルです。ある瞬間には、後で新しいデータを入れるためにクリアにする必要があります。

要素ごとにすべてをゼロに等しくすることができると理解しています。他に方法はないのでしょうか?

// Обнуляет любую простую структуру
template <typename T>
void SetNull( T &Value )
{
  static T NullValue = {0};
  
  Value = NullValue;
}
 

こんにちは!1日にすべての注文で合計収益を得るためのコードはありますか?

持っています。

double getProfitFromTime(datetime time)
  {
   double profit = 0;
   
   for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol() == Symbol() && OrderMagicNumber() == magic)
        {
         if(OrderCloseTime() < time)
            break;
         
         profit += OrderProfit() + OrderCommission() + OrderSwap();
        }
   
   return(profit);
  }

このように紹介されています。

getProfitFromTime(iTime(NULL, PERIOD_D1, 0);

1日の1通貨ペアの利益と全通貨ペアの利益の合計を見ることができるように、何か修正することはできますか?

 
ponochka:

と全通貨ペアの合計は?

条件からOrderSymbol() == Symbol() を削除する。

if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol() == Symbol() && OrderMagicNumber() == magic)
もしOrderMagicNumber() == magic を削除すると、すべての注文はマジックナンバーを考慮せずにカウントさ れます。
 

皆さん、こんにちは。新社会人への一言アドバイス拡散行動について少し研究してみたい。総スプレッドを計算するコードがあります。すべてが書かれており、すべてがうまく機能する。

void ModifySpread()
{
  int Spread = (Ask - Bid) / Point;
  
    
  Sumsp = SumSp + Spread;
  Vol++;
  
  PrevTime = Time[0];
  
  return;
}

スプレッドに動きがない、つまりbidとaskが変化していない瞬間を削除したいのですが。
私はこうしています。

void ModifySpread()
{
  int Spread = (Ask - Bid) / Point;
  if ((prevsbid == Bid)) && (prevsask == Ask))return;
   
  SumSp = SumSp + Spread;
  Vol++;
  
  

  prevsask = Ask;
  prevsbid = Bid;
  PrevTime = Time[0];
  return;
}

しかし、何も変わりません。どこが遅いんだろう?