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

 

안녕하세요. MT4 의 경우 Expert Advisor를 작성하고 싶습니다. 작업 중 하나는 M1에 Fibo 선을 한 시간 안에 그리는 것입니다. 즉, 11시가 시작되면 10시에서 10시 59분 사이에 고점과 저점을 중심으로 선을 그어야 합니다. 다른 방법을 시도하고 마지막이 무엇인지 설명했습니다. 대부분의 경우 도면 수준에 대한 코드를 줄일 수 있습니다. 문제는 주어진 영역에 선을 그리지 않는다는 것입니다.

int timemin=TimeMinute(시간[59]==0);
int timehour=TimeHour(시간[1] && TimeMinute(시간[0]));
int timemin1=TimeMinute(시간[0]==0);
int timehour1=TimeHour(시간[1] && TimeMinute(시간[59]));

int max=iHighest(Symbol(),1,MODE_HIGH,60,timehour);
int min=iLowest(Symbol(),1,MODE_LOW,60,timehour);

이중 막대=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));
이중 bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevel"); //------새로운 레벨

만약 (바럽)
{
창 다시 그리기();
ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,시간[분],낮음[분],시간[시간1],높음[최대]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);

}
이면 (반드시)
{
창 다시 그리기();
ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,시간[최대],낮음[최대],시간[시간1],높음[최소]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);

}
더블 f1=ObjectGet("FiboLevels",OBJPROP_PRICE1); //첫 번째 가격을 선택합니다.
더블 f2=ObjectGet("FiboLevels",OBJPROP_PRICE2); //두 번째 가격을 선택하고 차트를 그립니다.
이중 차이 = f2-f1;
문자열 a11=DoubleToStr(f2-Diff*0.0,Digits);
문자열 a12=DoubleToStr(f2-Diff*0.236,숫자);
문자열 a13=DoubleToStr(f2-Diff*0.382,Digits);
문자열 a14=DoubleToStr(f2-Diff*0.50,Digits);
문자열 a15=DoubleToStr(f2-Diff*0.618,Digits);
string a16=DoubleToStr(f2-Diff*1.0,Digits);

bool a1=ObjectSet("FiboLevels",OBJPROP_FIBOLEVELS,6);
bool a2=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+0,0.0);
bool a3=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+1,0.236);
bool a4=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+2,0.382);
bool a5=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+3,0.50);
bool a6=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+4,0.618);
bool a7=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+5,1.0);

bool a111=ObjectSetFiboDescription("FiboLevels",0,"0.0%");
bool a122=ObjectSetFiboDescription("FiboLevels",1,"23.6%");
bool a133=ObjectSetFiboDescription("FiboLevels",2,"38.2%");
bool a144=ObjectSetFiboDescription("FiboLevels",3,"50.0%");
bool a155=ObjectSetFiboDescription("FiboLevels",4,"61.8%");
bool a166=ObjectSetFiboDescription("FiboLevels",5,"100.0%");

 
Georgy Sled :

안녕하세요. MT4 의 경우 Expert Advisor를 작성하고 싶습니다. 작업 중 하나는 M1에 Fibo 선을 한 시간 안에 그리는 것입니다. 즉, 11시가 시작되면 10시에서 10시 59분 사이에 고점과 저점을 중심으로 선을 그어야 합니다. 다른 방법을 시도하고 마지막이 무엇인지 설명했습니다. 대부분의 경우 도면 수준에 대한 코드를 줄일 수 있습니다. 문제는 주어진 영역에 선을 그리지 않는다는 것입니다.

이중 막대=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));

이중 bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevel"); //------새로운 레벨

만약 (바럽)
{
창 다시 그리기();
ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,시간[분],낮음[분],시간[시간1],높음[최대]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);

}
이면 (반드시)
{
창 다시 그리기();
ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,시간[최대],낮음[최대],시간[시간1],높음[최소]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);

}

이게 더 짧나요? bool barup=... WindowRedraw(); 여전히 실행됩니다 - if에서 제거됨

   ObjectDelete ( "FiboLevels" ); //------Новый уровень
   WindowRedraw ();

   if ( iOpen ( Symbol (), 60 , 1 )> iClose ( Symbol (), 60 , 1 ))
   {
       ObjectCreate ( 0 , "FiboLevels" , OBJ_FIBO , 0 , Time [min], Low [min], Time [timehour1], High [max]);
       ObjectSet ( "FiboLevels" , OBJPROP_COLOR , clrGreen );
   }
   else
   {
       ObjectCreate ( 0 , "FiboLevels" , OBJ_FIBO , 0 , Time [max], Low [max], Time [timehour1], High [min]);
       ObjectSet ( "FiboLevels" , OBJPROP_COLOR , clrRed );
   }

더 짧을 수 있습니다 ... 내 파일 참조

파일:
Proba.mq4  3 kb
 
Artyom Trishkin :

코드를 올바르게 붙여넣으십시오.


더 명확하게:


코드를 올바르게 삽입하는 방법을 설명해주셔서 감사합니다))) 도움이 되었습니다) 확인하고 pliz가 코드를 올바르게 작성하도록 도와주세요. 매우 감사할 것입니다! (오늘 내 TV 삶은 삼성은 그것을 고치는 방법을 배웠지 만 나는이 코드에 대처할 수 없습니다 (((((
 
void fOrderOpen() {...
     if ( iTime ( Symbol (), PERIOD_M1 , 0 )) {
     if ((fMarketOrders( OP_BUY ))) { ....{
int irvbuy= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 3 , 0 , 0 , NULL , 12345 , 0 , 0 ); 

얘들 아, 왜 매 틱마다 주문을 열지? 바에 집중하는 방법을 알려주세요.

 
Rustam Bikbulatov :

얘들 아, 왜 매 틱마다 주문을 열지? 바에 집중하는 방법을 알려주세요.

ATS에 기술된 조건에 따라 그는 개구부에 초록불을 주었으므로 그는 그것을 엽니다.
이 경우 많은 솔루션이 있습니다. 그것은 모두 당신에게 더 수용 가능한 것에 달려 있습니다.
마지막 주문에서 N 번째 포인트만큼 가격이 올라간 경우에만 다음 주문이 열린다고 할 수 있습니다. 1개의 바에서 2개 이상의 주문을 열 수 없다고 말할 수 있습니다. 등..
필요한 조건을 적고 수표에 적용하십시오.

 
Konstantin Nikitin :

ATS에 기술된 조건에 따라 그는 개구부에 초록불을 주었으므로 그는 그것을 엽니다.
이 경우 많은 솔루션이 있습니다. 그것은 모두 당신에게 더 수용 가능한 것에 달려 있습니다.
마지막 주문에서 N 번째 포인트만큼 가격이 올라간 경우에만 다음 주문이 열린다고 할 수 있습니다. 1개의 바에서 2개 이상의 주문을 열 수 없다고 말할 수 있습니다. 등..
필요한 조건을 적고 수표에 적용하십시오.

이 자리를 위해      if ( iTime ( Symbol (), PERIOD_M1 , 0 )) { 한 막대에서 주문을 열기 위해 무엇을 써야 할까요?

 
Rustam Bikbulatov : 얘들 아, 왜 내 주문이 매 틱마다 시작됩니까? 바에 집중하는 방법을 알려주세요.

질문은 여러 번 요청되었으며 여러 번 답변되었습니다. 예를 들어 여기에서 검색을 사용하여

 
STARIJ :

질문은 여러 번 요청되었으며 여러 번 답변되었습니다. 예를 들어 여기에서 검색을 사용하여

덕분에!

 

안녕하세요!


특정 계산을 수행하는 EA가 있습니다. 다른 매트 연산, 배열, 루프를 사용합니다. 결과 는 파일에 기록됩니다 . 모든 단계를 완료한 후에는 처음부터 모든 것을 시작해야 합니다. 그러나 모든 계산을 한 번만 수행하고 두 번째 시작하고 정지하면 아무 작업도 수행되지 않습니다. 새 계산을 시작하기 전에 변수를 재설정하거나 배열을 지우는 등의 작업이 필요할 수 있습니다.

 
Kot :

안녕하세요!


특정 계산을 수행하는 EA가 있습니다. 다른 매트 연산, 배열, 루프를 사용합니다. 결과 는 파일에 기록됩니다 . 모든 단계를 완료한 후에는 처음부터 모든 것을 시작해야 합니다. 그러나 모든 계산을 한 번만 수행하고 두 번째 시작하고 정지하면 아무 작업도 수행되지 않습니다. 새 계산을 시작하기 전에 변수를 재설정하거나 배열을 지우는 등의 작업이 필요할 수 있습니다.

여기 에서 확실히 도움이 될 것입니다. 그리고이 주제에는 그러한 전문가가 없습니다.