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

 

친절하게 제공된 코드로 첫 번째 Expert Advisor를 구축했습니다( MakarFX _ 동기 부여 및 코드 제공).

모든 것이 제대로 작동하지만 하나의 잼만 있으면 됩니다. 지식이 부족하여 잼을 어디에서 찾아야하는지 이해할 수 없습니다.

알고리즘은 다음과 같습니다.

신호가 있습니다 - 주문을 엽니다

스톱으로 마감하거나 포인트를 가져오거나 예금 통화 CountLoss 및 CountProfit의 손익 한도에 도달할 때. (먼저 오는 것)

stop이 marit가 있는 다음 주문인 경우, take, CountProfit, CountLoss 인 경우 - lot이 시작 순서로 재설정됩니다.

따라서 손실 한도인 CountLoss까지 닫을 때 다음 주문은 시작 로트가 아니라 가장 작은 로트로 열립니다. 예를 들면 다음과 같습니다.

외부 변수에서 시작 로트는 0.02로 설정되고 CountLoss를 사용하면 다음 주문은 로트 0.01이 됩니다.

누구든지 오류가 어디에 있는지 말해 줄 수 있습니까?

MakarFX
MakarFX
  • 2021.03.19
  • www.mql5.com
Профиль трейдера
파일:
oilim1p11.mq4  17 kb
 
законопослушный гражданин :

친절하게 제공된 코드로 첫 번째 Expert Advisor를 구축했습니다( MakarFX _ 동기 부여 및 코드 제공).

모든 것이 제대로 작동하지만 하나의 잼만 있으면 됩니다. 지식이 부족하여 조인트를 어디에서 찾아야하는지 이해할 수 없습니다.

알고리즘은 다음과 같습니다.

신호가 있습니다 - 주문을 엽니다

스톱으로 마감하거나 포인트를 가져오거나 예금 통화 CountLoss 및 CountProfit의 손익 한도에 도달할 때. (먼저 오는 것)

stop이 marit가 있는 다음 주문인 경우, take, CountProfit, CountLoss 인 경우 - lot이 시작 순서로 재설정됩니다.

따라서 손실 한도 - CountLoss 까지 닫을 때 다음 주문은 시작 로트가 아니라 가장 작은 로트로 열립니다. 예를 들면 다음과 같습니다.

외부 변수에서 시작 로트는 0.02로 설정되고 CountLoss를 사용하면 다음 주문은 로트 0.01이 됩니다.

누구든지 오류가 어디에 있는지 말해 줄 수 있습니까?

이중 Lot() 함수에서 내가 무엇을 변경했는지 보십시오.

파일:
oilim1p11.mq4  17 kb
 
MakarFX :

거래 손실이 발생하면 한 번 인쇄합니다.

덕분에 아이디어를 얻었습니다. 나는 현재 주문의 마감 시간과 이전 주문의 마감 시간을 비교했고 모든 것이 원래대로 진행되었습니다. 별 도움이 되지는 않았지만 스톱로스로 반대 방향으로 오더를 여는 기능도 해봤습니다.
 
Petronet :
덕분에 아이디어를 얻었습니다. 나는 현재 주문의 마감 시간과 이전 주문의 마감 시간을 비교했고 모든 것이 원래대로 진행되었습니다. 별 도움이 되지는 않았지만 스톱로스로 반대 방향으로 오더를 여는 기능도 해봤습니다.

더 구체적으로...

 

좋은 오후에요 여러분. 이익 계산을 구현하고 atr 표시기를 중지하려고 합니다. 중지는 잘 작동합니다. 그러나 이익은 항상 같은 값으로 설정됩니다. 다음은 이익 계산 코드입니다.

   if (Tip_tp == en_TP_po_atr) // ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
  {
  tp = NormalizeDouble ( iATR ( NULL ,PeriodForWork_sl,atr_sl_period, 1 ), Digits ); // ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
       if (tp<stoplevel)   // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp= NormalizeDouble (tp* 1.5 , Digits ); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
  }
  tp= NormalizeDouble (tp* Point , Digits ()); // НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
  

  
  
   //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+

이익이 항상 같은 가치라는 사실이 잘못된 것은 무엇입니까? 오오?

 
DanilaMactep :

좋은 오후에요 여러분. 이익 계산을 구현하고 atr 표시기를 중지하려고 합니다. 중지는 잘 작동합니다. 그러나 이익은 항상 같은 값으로 설정됩니다. 다음은 이익 계산 코드입니다.

이익이 항상 같은 값이라는 오류는 무엇입니까? 오오?

   // ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
   if (Tip_tp == en_TP_po_atr)
     {
      tp = NormalizeDouble ( iATR ( NULL ,PeriodForWork_sl,atr_sl_period, 1 ), Digits ); // ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
       if (tp<stoplevel)   // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp= NormalizeDouble (tp* 1.5 , Digits ); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
     }
   //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+
 
MakarFX :
도움을 주셔서 감사합니다 - 코드 조각 변경 - 모든 것이 작동했습니다. 하지만 눈으로 미리 볼 수 없기 때문에 실수가 무엇인지 말로 설명 할 수 있습니까?
 
MakarFX :

이중 Lot() 함수에서 내가 무엇을 변경했는지 보십시오.

감독자! 덕분에 도움이되었습니다!

 
DanilaMactep :
도움을 주셔서 감사합니다 - 코드 조각 변경 - 모든 것이 작동했습니다. 하지만 눈으로 미리 볼 수 없기 때문에 실수가 무엇인지 말로 설명 할 수 있습니까?

당신의 코드가 공유됩니다

 В этой части кода ты задаешь tp значение АТР
   if (Tip_tp == en_TP_po_atr) // ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
  {
  tp = NormalizeDouble ( iATR ( NULL ,PeriodForWork_sl,atr_sl_period, 1 ), Digits ); // ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
       if (tp<stoplevel)   // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp= NormalizeDouble (tp* 1.5 , Digits ); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
  }
А в этой части ты обнуляешь предыдущее действие и задаешь непонятно что...
  tp= NormalizeDouble (tp* Point , Digits ()); // НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
 
안녕하세요! 터미널 설정을 도와주세요 - 마켓이 작동하지 않습니다. 시장에서 무료 지표를 다운로드하고 싶지만 다운로드할 수 없습니다.

비밀번호를 변경하고 재부팅했는데 아무 일도 일어나지 않습니다.

프로그램은 로그에 다음을 씁니다.

2021.08.23 11:54:18.236   MQL5 시장   제품 다운로드 실패 'MACD Intraday Trend' ( www.mql5.com :443 send failed [426: ])


안부 인사, 올가