초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1476

 
Artyom Trishkin #:

분할기를 0으로 확인하지 않고 많은 분할을 수행합니다. 폭발적입니다.

팁 주셔서 감사합니다, Artyom! 수표는 꼭 추가하겠습니다.

안부 전해주세요, 블라디미르.

 
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 #:

틱당 비용을 고려해야 합니다.

모두들 좋은 아침, 좋은 기분입니다!

코드를 작성할 시간이 없습니다. 포럼 회원들의 힌트를 고려하여 큰 감사를 드리며이 버전의 스크립트를 얻었습니다:

//+------------------------------------------------------------------+
//|                            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));
  }
//+------------------------------------------------------------------+

안부, 블라디미르.

 

안녕하세요!

로봇이 한 대의 컴퓨터에서만 작동할 수 있도록 로봇을 개선하는 방법을 제안해 주시겠습니까?

(복사를 방지하기 위해)

안부, 알렉산더

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

안녕하세요!

로봇이 한 대의 컴퓨터에서만 작동할 수 있도록 로봇을 개선하는 방법을 알려주시겠어요?

(복사를 방지하기 위해)

안부, 알렉산더

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

가장 간단한 변형입니다.

OnInit 함수에 두 줄의 코드를 삽입하세요.

계정 번호 대신 전문가 어드바이저에게 제공할 사람의 계정을 지정하고 ex5 파일만 컴파일하여 제공하세요.

 
Aleksandr Slavskii #:

가장 쉬운 옵션입니다.

OnInit 함수에 두 줄의 코드를 삽입합니다.

계좌 번호 대신 전문가 어드바이저를 제공할 사람의 계좌를 지정하고 ex5 파일만 컴파일하여 제공하세요.

감사합니다!

 
Aleksandr Slavskii #:

가장 쉬운 옵션입니다.

OnInit 함수에 두 줄의 코드를 삽입합니다.

계좌 번호 대신 전문가 어드바이저를 제공할 사람의 계좌를 지정하고 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개의 막대에 대한 정보를 표시합니다.

이것이 맞나요? 요금_총계에서도 5000이 될 것으로 예상했습니다.

사유: