[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 546

 
Vinin :
init()에서 항상 시장 환경을 사용할 수 있는 것은 아님을 잊지 마십시오.
"교활한 ***"에 대한 해결책이 항상 있다는 것을 알고 있습니다. 원하는 값은 루프를 통해 얻습니다.
 
TarasBY :
"교활한 ***"에 대한 해결책이 항상 있다는 것을 알고 있습니다. 원하는 값은 루프를 통해 얻습니다.

init() 함수가 작동하는 데 시간 제한이 있습니다.
 

좋은 저녁이에요.

EA는 여러 프레임에서 여러 쌍을 모니터링합니다. 그것이 연결된 쌍/창의 틱뿐만 아니라 모든 쌍의 틱에 반응하도록 하는 방법. 고맙습니다!

정수 시작()

{

이중 MA50[4][9];

이중 OBarHigh[4][9];

이중 OBarLow[4][9];

for (int t=0; t<=3; t++) // 시간 프레임

{

for (int p=0; p<=8; p++) // 쌍

{

MA50[t][p]=iMA(쌍[p],tframe[t],50,0,MODE_EMA,PRICE_CLOSE,0);

OBarHigh[t][p]=iHigh(쌍[p],tframe[t],0);

OBarLow [t][p]=iLow(쌍[p],tframe[t],0);

 
imux :

좋은 저녁이에요.

EA는 여러 프레임에서 여러 쌍을 모니터링합니다. 그것이 연결된 쌍/창의 틱뿐만 아니라 모든 쌍의 틱에 반응하도록 하는 방법. 고맙습니다!



아마도 루프 조언자가 도움이 될 것입니다.
 
Vinin :

init() 함수가 작동하는 데 시간 제한이 있습니다.
init()의 어드바이저에서 시장 환경에서 적어도 12개의 값을 얻습니다. 초기 단계에서 때때로 문제가 발생했습니다. 이제 모든 것이 작동합니다. 이것은 내 개인적인 경험입니다. 나는 규칙을 가장하지 않습니다. ;)
 
silhouette :

오실레이터에서 발산을 올바르게 찾는 문제를 이해하도록 도와주세요. 이 경우 MACD로 설정합니다. 다음 알고리즘을 스케치했습니다.

1) 처음부터 막대를 세고 오실레이터에서 피크를 찾습니다.

2) 피크 시간을 포함하는 배열 생성:

조건이 충족되면 MACD[i] 값을 입력합니다. 또한 마지막 새 피크에는 인덱스 [n]과 끝에서 두 번째 [n+1]이 있어야 합니다.

3) 상황(1)의 틀 내에서 추가 솔루션을 고려합니다.

실제로 문제는 포인트 2에 있습니다. 시계열에서와 같이 이러한 배열을 적절하게 구성하여 값이 각각의 새로운 피크와 함께 이동하도록 하는 방법은 무엇입니까?


도와주세요, 제발!
 
paladin80 :

나는 당신의 코드를 조금 뒤지기로 결정했습니다...


제 코드를 분석해 주셔서 대단히 감사합니다. 시간을 내주셔서 감사합니다.

저는 이제 막 프로그래밍을 배우기 시작했기 때문에 이 의견은 매우 중요하며 앞으로 유용할 것입니다.

이제 요점으로:

 if ( OrdersTotal ()> 0 )
{   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
      {   if ( OrderSymbol () != Symb) continue ;
           if ( OrderMagicNumber () != 777 ) continue ;
           return ;
      }
   }
}

실제로 이 형식에서는 완전한 주문 열거가 수행되며 추가 분석은 미결 주문을 기반으로 합니다.(여기서 모든 것이 명확함)

Symb=   Symbol ();
...
Min_Lot= MarketInfo ( Symbol (),MODE_MINLOT);
...
Steep=   MarketInfo ( Symbol (),MODE_LOTSTEP);

나는 또한 코드의 이 부분을 다시 수정했지만 포럼 참가자들은 init() 함수가 시장 환경에서 항상 사용 가능한 것은 아니라고 썼습니다.

일부 변수가 정의되지 않았을 수 있습니다. 아니면 제가 뭔가를 잘못 이해하고 있습니까?

이 항목의 논리가 명확하지 않습니다. (이 연산자에 대한 내 비전을 설명함)

 while (true)
...

오류 처리 블록이 있습니다.

 if (Fun_Error( GetLastError ())== 1 )       // Обработка ошибок
continue ;                               // Повторная попытка

오류를 해결할 수 있는 경우 조건을 확인하고 주문을 열기 위해 두 번째 시도가 이루어집니다.

그리고 while 문 은 값이 참일 때 작동합니다. 그것은 거짓 값을 받아들이지 않는 것으로 나타났습니다.

여러분, 도와주셔서 감사합니다.

 
silhouette :

도와주세요, 제발!


여기를 읽으십시오: https://www.mql5.com/ru/articles/1357 모든 것이 간단하고 접근 가능합니다.

 
r772ra :


여기를 읽으십시오: https://www.mql5.com/ru/articles/1357 모든 것이 간단하고 접근 가능합니다.

덕분에!
 
안녕하세요! 도와주세요. Expert Advisor를 디버깅할 수 없습니다(개시 및 청산 주문이 예상대로 기준에 따라 작동하지 않습니다(매번 스토캐스틱을 교차하여), 스토캐스틱에 따라 열리는 경우는 매우 드물며, 그 이유를 이해할 수 없습니다( ((( ), 또한 모든 주문은 손절매 또는 이익실현으로만 마감됩니다(티켓 번호 오류, 오류가 어디에 있는지 알 수 없음). 답변 감사합니다.