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

 
Artyom Trishkin #:

除算器のゼロを確認せずに何度も除算。爆発的。

アルチョム、ありがとう!必ずチェックを加えるよ。

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

 
Artyom Trishkin #:

爆発的だ。

十分だ。

 
Aleksandr Slavskii #:

fxsaber さん、もし読んでいたら、返信をお願いします。

PositionID は tst ファイルに保存されています。多分、tst->Virtualに変換するのが理にかなっていて、そうすればMT4スタイルでtstを扱うことができます。以下はそのような変換の です。

オブジェクトからバックテスト履歴を抽出することもできます。その方がライブラリが 理解しやすい。

ZЫ 私はこのスレッドを購読していないので、見られないかもしれません。

TesterReport - альтернативный отчет тестера стратегий Metatrader 5
TesterReport - альтернативный отчет тестера стратегий Metatrader 5
  • 2021.10.06
  • www.mql5.com
Торговые отчеты MetaTrader 5 довольно тяжелы для восприятия. По этой причине с определенного момента разработчики добавили в Терминал более понятный режим просмотра закрытых позиций. Однако, это не
 
Alexey Viktorov #:

ダニ1匹あたりのコストを必ず考慮すること。

皆さん、おはようございます!

コードを書く時間がない。フォーラムのメンバーからのヒントを考慮して、このバージョンのスクリプトを作りました:

//+------------------------------------------------------------------+
//|                            Lot_Size_Depending_On_Risk_And_SL.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
input uint Risk=6;         // Размер риска (> 0, но не более 100 %)
input uint Stop_Loss=1000; // Размер стоп-лосса (> 0, но не более 4294967295)
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot_Size_Depending_On_Risk_And_SL()
  {
//--- блок проверки входных параметров на корректность
   if(Risk==0 || Risk>100 || Stop_Loss==0)
     {
      Print("<===== Введены не корректные размеры риска и/или стоп-лосса! =====>");
      return(0.0);
     }
//--- блок определения размера лота
   double trading_account_currency=SymbolInfoDouble(_Symbol,SYMBOL_POINT)*
                                   SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/
                                   SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
   double lot=(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/(Stop_Loss*trading_account_currency);
//--- блок проверки размера лота на минимум и максимум от возможного
   double min_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double max_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   if(lot<min_volume)
      lot=min_volume;
   if(lot>max_volume)
      lot=max_volume;
//--- блок расчёта минимального шага изменения объёма необходимого для заключения сделки
   double step_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
   int ratio=(int)MathRound(lot/step_volume);
   if(MathAbs(ratio*step_volume-lot)>0.0000001)
      lot=ratio*step_volume;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print(DoubleToString(Lot_Size_Depending_On_Risk_And_SL(),2));
  }
//+------------------------------------------------------------------+

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

 

こんにちは!

私のロボットを改良して、1台のコンピューターでしか機能しないようにする方法を教えていただけませんか?

(コピーから守るため)

アレクサンダー

Документация по MQL5: Операции с массивами / ArraySetAsSeries
Документация по MQL5: Операции с массивами / ArraySetAsSeries
  • www.mql5.com
ArraySetAsSeries - Операции с массивами - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
klycko #:

こんにちは!

私のロボットを1台のコンピュータだけで機能するように改良する方法を教えていただけませんか?

(コピーされないようにするためです)

アレクサンダー

void OnInit()
  {
   if(AccountInfoInteger(ACCOUNT_LOGIN) != Номер счёта)
      return INIT_FAILED;
   return INIT_SUCCEEDED;
  }

最も簡単な方法です。

OnInit 関数に 2 行のコードを挿入します。

口座番号の代わりに、Expert Advisorを提供する人の口座を指定し、コンパイルしてex5ファイルのみを提供します。

 
Aleksandr Slavskii #:

最も簡単な選択肢だ。

OnInit関数に2行のコードを挿入する。

口座番号の代わりにExpert Advisorを提供する人の口座を指定し、コンパイルしてex5ファイルのみを提供します。

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

 
Aleksandr Slavskii #:

最も簡単な選択肢だ。

OnInit関数に2行のコードを挿入する。

口座番号の代わりに、Expert Advisorを提供する人の口座を指定し、コンパイルしてex5ファイルだけを渡します。

クライアントがターミナルのスイッチを入れると、Expert Advisor がクラッシュする :-))

というのも、ACCOUNT_LOGIN=0 という状況があるからです。

 
Maxim Kuznetsov #:

クライアントが端末のスイッチを入れると、Expert Advisorがクラッシュする:-)

というのも、ACCOUNT_LOGIN=0 のとき

信頼できる高い品質を必要とするなら、それはフリーランスのためのものです。

 

奇妙だ。ターミナルの "設定 -> チャート "で最大5000バーを設定した。ターミナルをリロードすると、シンボルのあるタブにカーソルを置くと、5000本と表示される。

しかし、このコードは

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],
                const double &open[], const double &high[], const double &low[], const double &close[],
                const long &tick_volume[], const long &volume[], const int &spread[])
{

  Print("rates_total=", rates_total);
  return rates_total;
}


6201バーの情報が表示されます。

これは正しいのでしょうか?私はrates_totalにも 5000を期待していました。

理由: