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

 
rosomah:

標準ライブラリを使って、AskとBidを取得する場合、mysymbol.RefreshRates()を行う必要があるか教えてください。

i.e.更新、またはライブラリのデータについては、更新する必要はないのですか?

または

現在の価格が必要な場合は、何もする必要はありません。

if((Bid-Xprice)/Point>=Step)

 

グリッドで新しい注文を開くと呼び出され、その目的はグリッド内のすべての注文のためにTPを再計算して変更することです。

ただし、グリッドの中で最も古い順番のTPを変更するだけです。

何を混ぜているんだろう(笑))

void ModifyOrders()
  {
   double avg= 0;
   int count = 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 || OP_SELL)
              {
               avg+=OrderOpenPrice();
               count++;
              }
           }
        }
     }
   int Tcount=count-1;        // Print("204");
   avg=(Tcount*Step*0.4);
//     avg=NormalizeDouble(avg/count,Digits);
   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)
              {
               double Bprice=FindLastBuyPrice();//Print("215");
               TP=NormalizeDouble(Bprice+avg*Point,Digits); //Print("216");
               bool res=OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0,Blue);// Print("217");
               if(!res)
                  Print(" Error modification. Error code = ",DoubleToString(GetLastError(),0));
              }

            if(OrderType()==OP_SELL)
              {
               double Sprice=FindLastSellPrice();
               TP=NormalizeDouble(Sprice-avg*Point,Digits);
               bool res=OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0,Red);
               if(!res)
                  Print(" Error modification. Error code = ",DoubleToString(GetLastError(),0));
              }
           }
        }
     }

  }
 
Leanid Aladzyeu:

グリッドで新しい注文を開くと呼び出され、その目的はグリッド内のすべての注文のためにTPを再計算して変更することです。

しかし、それはグリッドの中で最も古い順番のTPを変更するだけです。

何を混ぜているんだろう(笑))

いつになったらブラウザを変えるんだ?まるで子供のように。
 
Karputov Vladimir:
ブラウザはいつ変える?まるで子供のように。

私のブラウザにサイトを適応させていないのは、サイトの問題です。相変わらずのサービスデスク、0ヘルプ。 ブラウザで問題ない。

 
Leanid Aladzyeu:

私のブラウザにサイトを適応させていないのは、サイトの問題です。相変わらずのサービスデスク、0ヘルプ。 ブラウザで問題ない。

Internet Explorerでコードを貼り付ける と、正確にコードを貼り付けることができます。周りの人のことを考える - コードを貼り付けたテキストとして読むのは恥ずかしいことです。
 

MT4のコードを教えてください。新しいバーが 到着した場合、チャート・インジケータを再描画します。

コードを発見し、それを起動にかけたと思います

if(IsNewBar())
   {
    Print("Новый бар");
    RefreshRates();
    WindowRedraw();

   }

// функция за кодом

 bool IsNewBar()

{

   static datetime BARflag = 0;

   datetime now = Time[0];

   if(BARflag < now)

   {

      BARflag = now;         

      return(1);

   }

   

   else

   {

      return(0);

   }

}


プリントは出るが、チャートが再描画されない =(

 
twiling1983:

MT4のコードを教えてください。新しいバーが 到着した場合、チャート・インジケータを再描画します。

コードを発見し、それを起動にかけたと思います


プリントは出るが、チャートが再描画されない =(

おそらく、RefreshRatesとWindowRedrawはインジケータに影響を与えないからでしょう。指標を掘る必要がある。
 

現在のチャートで何を何のために買っているのかを判断する方法(曲者ロシア人、すみません)。例えば、EURUSDのチャートでは、基準通貨(買うもの)はEURで、相場通貨(買うもの)はUSDです。識別することができます。

string first = SymbolInfoString(Symbol(), SYMBOL_CURRENCY_BASE);
string second = SymbolInfoString(Symbol(), SYMBOL_CURRENCY_PROFIT);

例えば、金はどうでしょう?GOLDのチャートでは、両方の値がUSDになります。そして、USDのために金を買っていると判断する必要があるのです。シンボル名の文字列を解析することは適切ではありません。

 
Alexey Viktorov:
おそらく、RefreshRatesとWindowRedrawはインジケータに影響を与えないからです。指標を掘り下げる必要があるのです。

まあ、端末の更新ボタンを押せば、すべて再計算されるんですけどね。

コード内で同じボタンを押すにはどうすればよいのでしょうか?=)

私はそう考えています。

ChartSetSymbolPeriod(0,NULL,PERIOD_CURRENT);

 

アレイの勉強を開始 .

私は、配列、3つの配列= 0買い、1=売り、2=買いおよび売りの合計取引で プロ注文関数を書きました。

そして、( 最初の条件 && 配列 [0] == 0 )なら買いを入れるという条件を書きました。

そして、もし( 最初の条件 && 配列 [1]== 0) ならば、売りポジションを建てることになります。

しかし、テスターがエラーを投げてテストが止まってしまうのですが、何が問題なのでしょうか?( エラー " 配列の終了 " )

理由: