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

 

こんにちは!

チャートを強制的に再描画する方法(チャート上で右クリック し、"更新 "する機能のアナログ)。

以下のコードでは、更新が行われません。


void OnStart()
  {
   long currChart, prevChart = ChartFirst();
   int z = 0, limit = 100;
   while(z < limit && !IsStopped())
     {
      currChart = ChartNext(prevChart);
         ChartRedraw(currChart);
      if(currChart == 0)
         break;
      prevChart = currChart;
      z++;
     };
   ChartRedraw(0);
  }
 

MQL5に無料のExpert Advisorをダウンロードしたい。Expert Advisors」→「Free Expert Advisors」と進みます。質問:「無料」セクションにあるすべてのExpert Advisorをリアル口座で 使用できますか? Expert Advisorが「購入済み」と表示されている場合、リアル口座に置くことができますか?

「すでに購入済み」と表示されている場合、リアル口座で使用できますか?

 
mikhail2929 Кравченко リアル口座で 使用できますか? Expert Advisorに次のように記載されている場合、そのExpert Advisorを使用できますか?

"購入済み "と表示されている場合、リアル口座で使用できますか?

こんにちは!無料のExpert Advisorをダウンロードし、それがすでに購入されたという情報があれば、それを使用することができます。問題は、それがどの程度信頼できるかということです。この目的のために、実際の口座で使用する前に、それはExpert Advisorをテストすることを お勧めします!

よろしく、ウラジミール。

 
MrBrooklin #:

こんにちは!無料のExpert Advisorがダウンロードされ、すでに購入されたという情報があれば、それを使用することができます。問題はその信頼性です。そのためには、実際の口座で使用する前に、Expert Advisorをテストするのが一番 です!

よろしく、ウラジミール。

ありがとうございます。テストと最適化が必要であることは理解しています。すなわち、「無料」セクションに配置されたすべてのExpert Advisorsは、制限なしに実際の口座で動作するようにダウンロードしてインストールすることができます。私は正しく理解していますか?

 
MT5のExpert Advisorを書く ときに、CTradeクラスを使ってTPとSLを変更します。問題は、TPが変更された後、ポジションが最初にTPとSLに設定されることです:
 for(int i = 0; i <= PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }

TP_BuyとTP_Sellは正しくカウントされています。テスターではエラー4756が出ます。CTrade::OrderSend: modify position #4 GBPUSD (sl: 1.35950, tp: 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl: 1.35950, tp: 1.34860 -> sl: 1.35950, tp: 1.34860 [Invalid stops].SLの設定ミスだと理解しているが、おそらくSLが同じ場所にあることが原因だろう。しかし、これは私が必要としているものです。CTradeのマニュアルには「変更が必要ない場合は前の値」と書かれています。このエラーを克服する方法を教えてください。

 
mikhail2929 Кравченко #:

ウラジミール、ありがとう。テストと最適化が必要であることは理解しています。I.e. all Expert Advisors placed in the "free" section can be downloaded and installed for work on a real account without restrictions.私は正しく理解していますか?

私はすでに以前にあなたの質問に答えたと思います。はい、正しく理解しています。

ありがとうございます。

 
rexMetaL Expert Advisorを書く 際に、TPとSLを変更するためにCTradeクラスを使っています。問題は、TPが修正された後、ポジションが最初にTPとSLに設定されることです:

TP_BuyとTP_Sellは正しくカウントされています。テスターではエラー4756が出ます。ー CTrade::OrderSend: modifyーポジション#4 GBPUSD (sl: 1.35950, tp: 1.34860) [invalid stopsー] failed modify #4 sellー売0.05 GBPUSD sl: 1.35950, tp: 1.34860 -> sl: 1.35950, tp: 1.34860 [ー無効なー].SLの設定ミスだと理解しているが、おそらくSLが同じ場所にあることが原因だろう。しかし、これは私が必要としているものです。CTradeのマニュアルには「変更が必要ない場合は前の値」と書かれています。このエラーを克服する方法を教えてください。

こんにちは!

まず、ループ内の等号を削除してください:

for(int i = 0; i < PositionsTotal(); i++)

それ以上は見ていません。

ありがとう、ウラジミール。

 
MrBrooklin #:

こんにちは!

まず、ループ内の等号を削除してください:

私はあなたのコードをまだ見ていません。

ありがとう、ウラジミール。

問題はSL/TPにあります。
 for(int i = 0; i < PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }
 
MrBrooklin #:

こんにちは!

まず、ループ内の等号を削除してください:

あなたのコードをそれ以上見ていません。

ありがとう、ウラジミール。

SL/TPをインストゥルメントで単純に丸めることで問題は解決しました。エラーはSL/TPがインジケータから取得されたためでした。

ありがとうございました。

 
mikhail2929 クラフチェンコ#:

ウラジミール、ありがとう。テストと最適化が必要であることは理解しています。つまり、"無料 "セクションに配置されたすべてのExpert Advisorsは、制限なしに実際の口座で動作するようにダウンロードしてインストールすることができます。私は正しく理解していますか?

それはそれをしない方が良いです :)

理由: