MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1329

 
Tanita Gajduchok :
안녕하세요 여기 리더 점수는 어떻게 만드나요?

맨 위 ?

 
인사말!

다음과 같은 함수를 작성하는 방법:

증가하는 양초 볼륨의 합계는 예를 들어 마지막 10개 막대의 경우 감소하는 볼륨의 합계의 2배를 초과해야 합니다.

화면에 있는 것처럼.


파일:
IMG_9206.PNG  87 kb
 

좋은 오후에요 여러분. 로트가 손실 시 보증금의 백분율로 설정되도록 Grail 머신에 로트 크기 계산을 추가하려고 합니다. 즉, 손절매가 발동되면 지정된 비율이 예금에서 손실되거나, 이 비율에 대해 예금이 적으면 로트가 브로커에 대해 가능한 최소로 설정됩니다 ... 일부 사이트에서 찾았습니다. 이 작업을 수행하고 스크립트 코드를 나에게 전송한 스크립트에 대한 설명입니다. 그러나 많은 부분이 올바르지 않은 것으로 간주됩니다. . 그랬어. 입력 변수에서 최대 위험을 담당하는 변수를 선언했습니다.

 extern int MaxRisk= 1 ; // МАКСИМАЛЬНЫЙ % УБЫТКА ПРИ СТОП ЛОССЕ?

더 나아가 나는 변수를 선언합니다. 계정 에 무료 자금의 양 을 저장하는 변수입니다. 기기에 대한 한 포인트의 변수 값입니다. 브로커의 최소 로트 변수. 브로커의 최대 랏 값을 저장하는 변수. 그리고 로트 크기 단계를 저장하는 변수입니다.

   double Free =AccountFreeMargin(); // ПОЛУЧАЕМ СВОБОДНЫЕ СРЕДССТВА ДЛЯ РАСЧЁТА ОБЪЁМА ЛОТА
   double LotVal =MarketInfo( Symbol (),MODE_TICKVALUE); //СТОИМОСТЬ 1 ПУНКТА
   double Min_Lot =MarketInfo( Symbol (),MODE_MINLOT);   // МИНИМАЛЬНЫЙ ЛОТ РАЗРЕШЁННЫЙ БРОКЕРОМ
double Max_Lot =MarketInfo( Symbol (),MODE_MAXLOT);     // МАКСИМАЛЬНЫЙ ЛОТ РАЗРЕШЁННЫЙ БРОКЕРОМ
double Step =MarketInfo( Symbol (),MODE_LOTSTEP);     // ШАГ ИЗМЕНЕНИЯ РАЗМЕРА ЛОТА

그런 다음 특정 손절매에서 주어진 위험으로 로트 볼륨을 계산합니다. 손절매는 atr로 계산되거나 포인트로 고정됩니다. 고정 로트를 넣으면 모든 것이 열리고 잘 작동하기 때문에 이 계산은 올바르게 작동합니다. 로트의 부피를 계산하는 공식은 다음과 같습니다.

 double lot = MathFloor ((Free*MaxRisk/ 100 )/(sl*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА, КОТОРУЮ Я СОВСЕМ НЕ ПОНИМАЮ((((
   if (lot<Min_Lot) lot=Min_Lot; //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ МЕНЬШЕ ЧЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ЛОТ ПРИСВАЕМАЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРА
if (lot>Max_Lot) lot=Max_Lot;   //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ БОЛЬШЕ ЧЕМ МАКСИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ОЛТ ПРИСВАЕВАЕМ МАКС ЛОТ У БРОКЕРА

 


  인쇄를 통한 모든 계산이 끝나면 로트의 값을 표시합니다.

 Print ( "ЛОТ ДО НОРМАЛИЗАЦИИ= " +lot);
 lot= NormalizeDouble (lot, Digits ());
Print ( "ЛОТ ПОСЛЕ НОРМАЛИЗАЦИИ= " +lot);

기록되는 내용 로그에 로트와 스톱으로 표시되는 것 - 스톱 값은 정확하지만 로트가 없습니다 ((((

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Информация о счете - Состояние окружения - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
DanilaMactep :

좋은 오후에요 여러분. 로트가 손실 시 보증금의 백분율로 설정되도록 Grail 머신에 로트 크기 계산을 추가하려고 합니다. 즉, 손절매가 발동되면 지정된 비율이 예금에서 손실되거나, 이 비율에 대해 예금이 적으면 로트가 브로커에 대해 가능한 최소로 설정됩니다 ... 일부 사이트에서 찾았습니다. 이 작업을 수행하고 스크립트 코드를 나에게 전송한 스크립트에 대한 설명입니다. 그러나 많은 부분이 올바르지 않은 것으로 간주됩니다. . 그랬어. 입력 변수에서 최대 위험을 담당하는 변수를 선언했습니다.

더 나아가 변수를 선언합니다. 계정 에 여유 자금의 양 을 저장하는 변수입니다. 기기에 대한 한 포인트의 변수 값입니다. 브로커의 최소 로트 변수. 브로커의 최대 랏 값을 저장하는 변수입니다. 그리고 로트 크기 단계를 저장하는 변수입니다.

그런 다음 특정 손절매에서 주어진 위험으로 로트 볼륨을 계산합니다. 손절매는 atr로 계산되거나 포인트로 고정됩니다. 고정 로트를 넣으면 모든 것이 열리고 잘 작동하기 때문에 이 계산은 올바르게 작동합니다. 로트의 부피를 계산하는 공식은 다음과 같습니다.


  인쇄를 통한 모든 계산이 끝나면 로트의 값을 보기 위해 표시합니다.

로그에 표시되는 내용은 ***에서 볼 수 있습니다.

언뜻보기에는 기능이 정상입니다. 공식에서만 sl을 삽입해야 하는 주문의 손절매 가격이 아니라 주문 개시부터 중지까지의 거리(포인트)입니다.

추가: 로트를 _Digits in to Step - (STEP OF CHANGE OF THE LOT SIZE)이 아닌 정확도로 정규화하는 것이 필요하며 Print에서는 DoubleToString()을 통해 동일한 정확도로 출력해야 합니다. 그러면 결과를 볼 수 있습니다. 보고 싶었다.

 
DanilaMactep :

좋은 오후에요 여러분. 로트의 크기를 계산하기 위해 기계를 Grail에 나사로 고정하려고 합니다.

나는 나 자신에게 이것을했다

Order_Lots = NormalizeDouble ((AccountBalance()/ 100 *Percen)/(MarketInfo( Symbol (),MODE_TICKVALUE)*Stop_Point)- 0.005 , 2 );
 
Alexey Viktorov :

언뜻보기에는 기능이 정상입니다. 공식에서만 sl을 삽입해야 하는 주문의 손절매 가격이 아니라 주문 개시부터 중지까지의 거리(포인트)입니다.

추가: 로트를 _Digits in to Step - (STEP OF CHANGE OF THE LOT SIZE)이 아닌 정확도로 정규화하는 것이 필요하며 Print에서는 DoubleToString()을 통해 동일한 정확도로 출력해야 합니다. 그러면 결과를 볼 수 있습니다. 보고 싶었다.

나는 수학을 잘 못합니다. sl을 대신하기 위해 코드에서 주문 시작부터 중지까지의 거리를 어떻게 계산할 수 있습니까? 이렇게 결론

 DoubleToString ( "ЛОТ ПОСЛЕ НОРМАЛИЗАЦИИ= " +lot); // ВЫВОД ЗНАЧЕНИЯ ЛОТА
이와 같은 비정규화된 로트 값
lot= NormalizeDouble (lot,Step); // НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ ЛОТА 

코드에서 오프닝에서 정류장까지의 거리를 계산하는 방법을 이해하는 것이 남아 있습니다.

 
DanilaMactep :

코드에서 오프닝에서 정류장까지의 거리를 계산하는 방법을 이해하는 것이 남아 있습니다.

 if (buy)
Stop_Point= (Pric_UP-Loss_UP)/ Point +Spread; 
else
Stop_Point= (Loss_DN-Pric_DN)/ Point +Spread; 
 
MakarFX :

코드 조각에 대해 대단히 감사합니다. 하지만 이제 문제는 이 코드 조각에서 변수를 선언할 유형과 변수에 할당할 값입니다. 나는 마술사가 아니지만 배우는 중일뿐입니다.

 
DanilaMactep :

코드 조각에 대해 대단히 감사합니다. 하지만 이제 문제는 이 코드 조각에서 어떤 유형의 변수를 선언하고 어떤 값을 할당할 것인지입니다. 나는 마술사가 아니지만 배우는 중일뿐입니다.

Pric_UP

시가를 사다

Loss_UP

손절매 가격을 사다

   Spread = StrToInteger( DoubleToString (MarketInfo( Symbol (), MODE_SPREAD ), 0 ));
확산
 
Порт-моне тв :
인사말!

다음과 같은 함수를 작성하는 방법:

증가하는 양초 볼륨의 합계는 예를 들어 마지막 10개 막대의 경우 감소하는 볼륨의 합계의 2배를 초과해야 합니다.

화면에 있는 것처럼.


누군가 나를 도울 수 있습니까?