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

 
DanilaMactep :

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

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

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

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


그냥 삭제

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

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

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

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

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


두 가지 다른 옵션이 주어졌을 때 두 가지를 동시에 적용할 필요는 없습니다.

sl을 두 가지 다른 옵션으로 간주합니다.

sl= iATR ( NULL ,PeriodForWork_sl,atr_sl_period, 1 ); // ПОЛУЧЕНИЕ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА

또는

sl= razmer_fikc_sl* Point ; // ПЕЕРМЕННОЙ СТОП ЛОССА ПРИСВАЕВАЕМ ФИКСИРОВАНОНЕ ЗНАЧЕНИЕ ПУНКТОВ И ДОМНОЖАЕМ НА ПОИНТ

가격 가치에서 가치를 얻으십시오. 그리고 ...에서 ...까지의 포인트는 공식에 삽입되어야 합니다.

정류장이 iATR(………)/_Point 또는 size_fikc_sl 가격과 거리가 있지만 함수에서 두 개의 다른 값을 사용하는 것은 그다지 편리하지 않으므로 하나의 옵션만 남겨두는 것이 좋습니다.

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

그리고 로트 크기를 계산하기 전에 sl을 계산해야 한다는 것을 잊지 마십시오.

 
sl= iATR ( NULL ,PeriodForWork_sl,atr_sl_period, 1 ) / Point ; // ПОЛУЧЕНИЕ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
필연적으로
 

이런 식으로 하세요...

 void OnTick ()
  {
//---
if (tip_sl==en_po_atr)
     { //ЕСЛИ ТИП СТОП ЛОССА СТОИТ ПО АТР ТО ВЫСЧИТЫВАЕМ ЕГО ИЗ АТР
     sl= iATR ( NULL ,PeriodForWork_sl,atr_sl_period, 1 )/ Point ; // ПОЛУЧЕНИЕ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
       Print ( "СТОП ПО АТР, ЕГО РАЗМЕР " +sl);
     }
     else //ИНАЧЕ- ТО ЕСТЬ ЕСЛИ СТОП ЛОСС ФИКСИРОВАННЫЙ В ПУНКТАХ
     {
     sl= razmer_fikc_sl; // ПЕЕРМЕННОЙ СТОП ЛОССА ПРИСВАЕВАЕМ ФИКСИРОВАНОНЕ ЗНАЧЕНИЕ ПУНКТОВ И ДОМНОЖАЕМ НА ПОИНТ
       Print ( "СТОП ПО АТР, ЕГО РАЗМЕР " +sl);
     }
double lot = MathFloor ((Free*MaxRisk/ 100 )/(sl*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА
 
MakarFX :

그냥 삭제

라인에 주석을 달았고 테스트가 시작되었습니다. 정말 감사합니다! 왜 iATR에서 손절매 변수를 받을 때 끝에 포인트로 나누는지 이해가 되지 않았습니다. P/S 나는 수학이 정말 어렵다 - 나는 장난을 치는 것이 아니다 :-(그러나 나는 테스트가 가고 100 랏의 창고로 최소 랏이 설정되어 있고 10,000의 창고로 항상 다른 것 같아요. , 그래서 규범이 작동합니다 O_o 도움을 주셔서 다시 한 번 감사합니다 ... .

 
DanilaMactep :

라인에 주석을 달았고 테스트가 시작되었습니다. 정말 감사합니다! 왜 iATR에서 손절매 변수를 받을 때 끝에 포인트로 나누는지 이해가 되지 않았습니다. P/S 나는 수학이 정말 어렵다 - 나는 장난을 치는 것이 아니다 :-(그러나 나는 테스트가 가고 100 랏의 창고로 최소 랏이 설정되어 있고 10,000의 창고로 항상 다른 것 같아요. , 그래서 규범이 작동합니다 O_o 도움을 주셔서 다시 한 번 감사합니다 ... .

ATR은 0.00120과 같은 십진수를 출력합니다.

size_fikc_sl 당신은 정수가 있습니다

포인트가 필요한 로트를 계산하려면 정수

ATR/Point는 정수를 생성합니다.

 
오래된 스레드이지만 해결책을 찾을 수 없습니다. 시간 간격(예: 12:00 ~ 14:00)을 규정하고 이 간격에서 한 번만 일부 조건(예: RSI<30)을 충족하는 주문을 여는 방법.

또는

Sleep과 유사한 것: 주어진 조건에 따라 주문을 열고 2시간 동안 아무 것도 하지 않습니다. 그러나 테스터에서는 Sleep이 작동하지 않습니다 .
 
Порт-моне тв :
오래된 스레드이지만 해결책을 찾을 수 없습니다. 시간 간격(예: 12:00 ~ 14:00)을 규정하고 이 간격에서 한 번만 일부 조건(예: RSI<30)을 충족하는 주문을 여는 방법.

또는

Sleep과 유사한 것: 주어진 조건에 따라 주문을 열고 2시간 동안 아무 것도 하지 않습니다. 그러나 테스터에서는 Sleep이 작동하지 않습니다 .

첫 번째 조건 - 때가 왔다
두 번째 조건 - rsi
세 번째 조건 - 시간 간격으로 그러한 주문을 여는 가격으로 역사상 그러한 주문이 없습니다.

 

안녕하세요.

Elliott Wave Oscillator 표시기가 있으며 EWO 변수의 숫자 값을 제공합니다. 0보다 큰 양의 EWO와 0보다 작은 음의 EWO가 있습니다.

마지막 100개의 EWO 판독값에서 양수 EWO의 평균을 계산하고 음수 EWO의 평균을 별도로 계산합니다.

다음과 같이 표시기에서 값을 가져옵니다. double EWO=iCustom(Symbol(),0,"Elliott Wave Oscillator",0,0);

조언자에서 이것을 구현하는 데 어떤 mql4 코드를 사용할 수 있습니까?


평균 모듈로를 찾는 것이 가능했습니다.

이중 가용성_EWO = 0;
for(int g=0;g<100;g++)
avarage_EWO = avarage_EWO + MathAbs ( iCustom(Symbol(),0,"엘리엇 파동 발진기",0,g) ); // 모듈로 평균
가용성_EWO = 가용성_EWO/100;


그러나 평균 양수 및 평균 음수 EWO를 별도로 계산하는 방법은 무엇입니까?

덕분에!



 

이익실현 트리거의 결과로 주문이 이루어졌습니다.

어떻게 그리고 왜 ORDER _REASON_TP,

DEAL _REASON_TP가 어떻게 작동하는지 알고 있지만 여기서 주문은 어떻게 되는지 명확하지 않습니다.