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

 
Aleksei Stepanenko :
죄송합니다. 여기 대화에 끼어 들었습니다. 눈치 채지 못했습니다 ...

주제는 일반적이고 귀하의 코드는 항상 흥미롭습니다...

많이 채택)

 
Iurii Tokman :
마카르FX :

.

 
Iurii Tokman :

우크라이나어 기술 zavdannya 더 잘 이해

저는 아직 이 레벨이 없습니다. 제 모국어는 러시아어입니다 :)

...동일한 수준의 에일
 
Aleksei Stepanenko :

저는 아직 이 레벨이 없습니다. 제 모국어는 러시아어입니다 :)

나는 소련에서 왔어요... 나는 두 개의 모국어를 가지고 있습니다)
 
MakarFX :
나는 소련에서 왔어요... 나는 두 개의 모국어를 가지고 있습니다)
.
 
MakarFX :
나는 소련에서 왔어요... 나는 두 개의 모국어를 가지고 있습니다)

그리고 우리는 세 가지가 있습니다. surzhik은 여전히

 
DanilaMactep :

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

이와 같은 비정규화된 로트 값

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

시가와 정가 간의 차액의 절대값을 가격 단계로 나눕니다.

   int sl = fabs (OrderOpenPrice()-OrderStopLoss())/ _Point ;

이 sl 값은 공식에 들어갈 것입니다.

ATR 표시기에 계산된 스톱을 넣으면 충분합니다.

 double lot = MathFloor ((Free*MaxRisk/ 100 )/(sl / _Point *LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА
그리고 이것은 정규화된 로트 크기가 됩니다.
 
MakarFX :

시가를 사다

손절매 가격을 사다

확산

더 명확해졌지만 구매 및 판매 가격에 내가 할당하는 가치를 이해하는 것만 남아 있습니다. 내 코드에 따르면 주문을 여는 방법은 다음과 같습니다.

 OrderSend ( Symbol (),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp , "ДИВЕРГЕНЦИЯ НА БАЙ АО" ); // ОТКРЫВАЕМ БАЙ ОРДЕР

OrderSend ( Symbol (),OP_SELL,lot,Bid,slippages,Ask+sl,Ask-tp , "ДИВЕРГЕНЦИЯ НА СЕЛ АО" ); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР

Tobish는 내가 지정한 구매자의 시가를 변수로 지정하고, 내가 Bid를 지정하는 변수에 판매의 시가를 지정합니까?

 
DanilaMactep :

더 명확해졌지만 구매 및 판매 가격에 내가 할당하는 가치를 이해하는 것만 남아 있습니다. 내 코드에 따르면 주문을 여는 방법은 다음과 같습니다.

Tobish는 내가 지정한 구매자의 시가를 변수로 지정하고, 내가 Bid를 지정하는 변수에 판매의 시가를 지정합니까?

 OrderSend ( Symbol (),OP_BUY,lot,Ask,slippages,Bid- sl ,Bid+tp , "ДИВЕРГЕНЦИЯ НА БАЙ АО" ); // ОТКРЫВАЕМ БАЙ ОРДЕР

이 기능으로 보면 이미 손절매를 알고 계시네요... 질문이 이해가 안가네요

 
Alexey Viktorov :

시가와 정가 간의 차액의 절대값을 가격 단계로 나눕니다.

이 sl 값은 공식에 들어갈 것입니다.

ATR 표시기에 계산된 스톱을 넣으면 충분합니다.

그리고 이것은 정규화된 로트 크기가 됩니다.

나는 조언대로 코드를 수행했다. 첫째, 코드에 따르면 정지 유형을 선택하는 조건이 있습니다. atr 또는 fixed

 if (tip_sl==en_po_atr)
     { //ЕСЛИ ТИП СТОП ЛОССА СТОИТ ПО АТР ТО ВЫСЧИТЫВАЕМ ЕГО ИЗ АТР
     //Print("СТОП ПО АТР, ЕГО РАЗМЕР ");
     sl= iATR ( NULL ,PeriodForWork_sl,atr_sl_period, 1 ); // ПОЛУЧЕНИЕ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
       Print ( "СТОП ПО АТР, ЕГО РАЗМЕР " +sl);
     }
     else //ИНАЧЕ- ТО ЕСТЬ ЕСЛИ СТОП ЛОСС ФИКСИРОВАННЫЙ В ПУНКТАХ
     {
     Print ( "СТОП ЛОС ФИКСИРОВАННЫЙ В ПУНКТАХ" );
     sl= razmer_fikc_sl* Point ; // ПЕЕРМЕННОЙ СТОП ЛОССА ПРИСВАЕВАЕМ ФИКСИРОВАНОНЕ ЗНАЧЕНИЕ ПУНКТОВ И ДОМНОЖАЕМ НА ПОИНТ
     }

다음으로 정규화를 주석 처리하고 다음과 같이 할당했습니다.

     sl = fabs (OrderOpenPrice()-OrderStopLoss())/ _Point ; // ПРИСВОИЛ ЗНАЧЕНИЕ КАК СОВЕТОВАЛИ
     //sl= NormalizeDouble(sl,Digits());// НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ СТОП ЛОССА ДЛЯ ОТКРЫТИЯ СДЕЛКИ ТО  ЧТО БЫЛО ЗАКОМЕНТИРОВАЛ

코드를 따라 더 나아가 나는 이익을 계산하고 있습니다. 거기에는 아무런 문제가 없었고 이익을 계산한 후에 조언된 끔찍한 공식을 추가했습니다.

 double lot = MathFloor ((Free*MaxRisk/ 100 )/(sl/ Point *LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА КОТОРУЮ МНЕ СОВЕТОВАЛИ

모든 것이 오류 없이 컴파일되었습니다. 그리고 테스트가 시작되면 내가 아는 한 0으로 나누기가 발생한다는 로그에 오류가 발생하고 테스트가 중지됩니다. 내가 어디를 잘못했거나 무엇을 잘못했습니까?

테스트 시작 시 오류