기고글 토론 "Expert Advisor의 한계 및 검증" - 페이지 2

 

감사합니다.

 
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT);

'SYMBOL_VOLUME_LIMIT' - 선언되지 않은 식별자.............

'SymbolInfoDouble' - 함수 호출에 과부하를 적용할 수 없음.............

저만 그런가요?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
gumgum:

'SYMBOL_VOLUME_LIMIT' - 선언되지 않은 식별자.............

'SymbolInfoDouble' - 함수 호출에 과부하를 적용할 수 없음.............

저만 그런가요?

새 빌드가 출시되면 모든 것이 정상으로 돌아올 것입니다. 빌드를 기다리고 있습니다.
 
Rosh:

할 수 있나요?

lot_max=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
 

SeriesInfoInteger() 함수에 대한 질문이 하나 더 있습니다.

"AccountInfo... 정보 관련성" 주제를 만들 때 "소프트웨어 환경에 캐시된" 데이터를 사용하는 함수가 있다는 것을 알게 되었습니다.정보 관련성"이라는 주제를 만들 때 "소프트웨어 환경에 캐시된" 데이터를 사용하는 함수와 항상 "실제 데이터에 직접 액세스"하는 함수가 있다는 것을 배웠습니다.

SeriesInfoInteger() 함수는 어느 함수의 범주에 속하나요?

 

체크볼륨값 함수에는 다음 코드가 사용됩니다:

int ratio=(int)MathRound(volume/volume_step);

if(MathAbs(ratio*volume_step-volume)>0.0000001)

{

description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",

volume_step,ratio*volume_step);

return(false);

}

그러나 이것이 더 정확합니다:

int ratio = (int)MathRound((volume-min_volume)/volume_step);

if (MathAbs(ratio*volume_step+min_volume-volume)>0.0000001)

{

description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",

  volume_step,ratio*volume_step+min_volume);

return(false);

}

볼륨 변화의 최소 단계는 최소값부터 계산해야 하기 때문입니다.

 

그리고 코드 스니펫

//--- вычислим значение маржи

bool check=OrderCalcMargin(type,Symbol(),lots,last_tick.ask,margin);

으로 대체해야 할 수도 있습니다:

//--- вычислим значение маржи

double price = (type == ORDER_TYPE_BUY || type == ORDER_TYPE_BUY_LIMIT || type == ORDER_TYPE_BUY_STOP || type == ORDER_TYPE_BUY_STOP_LIMIT) ? last_tick.ask : last_tick.bid;

bool check=OrderCalcMargin(type,Symbol(),lots,price,margin);

 
이제 첨부된 소스 코드 파일과 HTML 코드에 삽입된 소스 코드가 사용자의 편의를 위해 포르투갈어로 완전히 번역됩니다.
MQL5.community - User Memo
MQL5.community - User Memo
  • 2010.02.25
  • MetaQuotes Software Corp.
  • www.mql5.com
You have just registered and most likely you have questions such as, "How do I insert a picture to my a message?" "How do I format my MQL5 source code?" "Where are my personal messages kept?" You may have many other questions. In this article, we have prepared some hands-on tips that will help you get accustomed in MQL5.community and take full advantage of its available features.
 
Rashid Umarov:

MQL5의 변경으로 인해 이제 하나의 심볼에 허용되는 최대 전체 볼륨은 다음과 같이 얻을 수 있습니다:

이전 변형을 사용하지 마세요! 다음과 같았습니다:

문서가 수정되었으며 새로운 Check_Order_And_Volume_Limits.mq5 전문가 코드가 첨부되었습니다.

관리자님께

함수를 사용하려고 하는데 모든 경우에 0을 반환합니다.

내 MT5 빌드는 2280입니다.

 
double orders_volume_on_symbol=PendingsVolume(symbol);


는 오류가 발생하고 해당 함수가 없습니다.

그리고 보류중인 주문을 포함하지 않도록 함수를 수정하면 0을 반환합니다.


double NewOrderAllowedVolume(string symbol)
  {
   double allowed_volume=0;
//--- 주문의 최대 거래량 제한을 가져옵니다.
   double symbol_max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
//--- 기호로 볼륨 제한을 가져옵니다.
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT);

//--- 기호로 오픈 포지션의 볼륨을 가져옵니다.
   double opened_volume=PositionVolume(symbol);
   if(opened_volume>=0)
     {
      이미 사용 가능한 볼륨을 사용한 경우 //---
      if(max_volume-opened_volume<=0)
         return(0);

      //--- 오픈 포지션의 볼륨이 최대 볼륨을 초과하지 않습니다.
      //두 배 주문_볼륨_온_심볼=PendingsVolume(심볼);
      //허용된 볼륨=최대 볼륨-열린 볼륨-주문 볼륨-온 심볼;
      allowed_volume=max_volume-opened_volume;
      if(allowed_volume>symbol_max_volume) allowed_volume=symbol_max_volume;
     }
   return(allowed_volume);
  }

최대 볼륨이 0이고 열린 볼륨이 0이기 때문입니다;

개설된 포지션이 없는데 최대 볼륨이 0인 이유는 무엇인가요?

빌드 2715

Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
  • www.mql5.com
Predefined Macro Substitutions - Named Constants - Constants, Enumerations and Structures - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5