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

 
forexnew :

사진 찍는 방법:

/

문자열로?

예를 들어:

문자열 경로=터미널경로()+"/logs/"+tekTime+".log";

오류가 발생하고 슬래시 "/"를 제거하면

문자열 경로=터미널경로()+"로그"+tekTime+".log";

- 오류가 없습니다.




여기여기 를 읽으십시오.

 
ZZZEROXXX :

IsTradeAllowed()가 반환하는 다른 것을 볼 수 있습니까?

도와주세요. 마지막 지점에서 N개의 막대 앞에 연결된 두 지점을 기반으로 추세선을 만들려고 합니다. 저것들. 들어오는 - 첫 번째 및 두 번째 지점의 시간 가격, N은 앞의 막대 수로 표시됩니다(빔 플래그 = false). 두 번째 점이 현재 막대 0에서 막대 1에 있다고 가정하고 앞으로 10개의 막대를 그려야 하는 경우 미래에서 막대의 시간과 가격을 어떻게 계산합니까?

이것은 또한 고문을 컴파일하는 동안 갑자기 바쁜 거래 스레드에 빠지는 경우에도 작동합니다. EA 댓글에 요청 로그의 메시지를 표시하는 방법을 찾고 있습니다. 실제로 그러한 작업에 직면한 사람은 거의 없는 것 같습니다.
 
PapaYozh :


여기여기 를 읽으십시오.

고맙습니다!
 

정말 친애하는 전문가가 도움이되지 않을까요?

pvm117 20.10.2011 18:26

안녕하세요!

첫 번째 실험으로 저는 다음 알고리즘을 구현하기로 결정했습니다. 볼린저 밴드가 좁은 통로로 수렴한 후 얼마 후 시장이 위 또는 아래로 급격한 움직임이 있을 것으로 예상할 수 있습니다. Expert Advisor에서 나는 볼린저 밴드의 상태를 분석하고, 볼린저 밴드가 닫힐 때( 델타 포인트 ), 시장이 희망을 갖고 하향 방향(바닥 라인 아래의 스텝오픈 포인트)으로 매도하기 위해 보류 주문을 넣습니다. 이 방향으로 급격하게 이동할 것입니다. 시장이 다른 방향으로 갔다면 이 주문을 삭제하기만 하면 됩니다.

 extern double Delta= 800.0 ;               // Ширина канала, которую мы считаем достаточно узкой чтобы ожидать скоро серьезного движения в одну из сторон
extern double StepOpen= 150.0 ;           // Отступ от линии Боллинджера  для открытия отложенного ордера
extern double TP= 350.0 ;                 // Take Profit
extern double SL= 400.0 ;                 // Stop Loss

int start()
  {
   double T1= iBands ( NULL , 0 , 20 , 2 , 0 , PRICE_CLOSE ,MODE_UPPER, 0 );   // верхняя линия Боллинджера
   double T2= iBands ( NULL , 0 , 20 , 2 , 0 , PRICE_CLOSE ,MODE_LOWER, 0 ); // нижняя линия Боллинджера
   if ((Ask>T1+StepOpen* Point )&& OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==true) OrderDelete ( 0 ); // если рынок пошел вверх – то удаляем отложенный ордер
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==true) return ( 0 ); // если есть ранее открытый ордер – прекращаем выполнение текущей итерации советника
   if (T1-T2<Delta* Point ) {               // если линии Боллинджера сблизились ближе чем на Delta пунктов начинаем операцию открытия ордера
       double PriceOpen= NormalizeDouble (T2-StepOpen* Point , 5 );   // вычисляем цену открытия
       double StopLoss= NormalizeDouble (T2-StepOpen* Point +SL* Point , 5 ); // вычисляем StopLoss
       double TakeProfit= NormalizeDouble (T2-StepOpen* Point -TP* Point , 5 ); // вычисляем TakeProfit
       OrderSend ( Symbol (),OP_SELL, 0.1 ,PriceOpen, 5 ,StopLoss,TakeProfit, 0 , 0 , 0 , Green ); //  открываем ордер на продажу
            }
   return ( 0 );
  }
알고리즘이 불안정하여 짧은 시간에 2개의 주문을 여는 경우도 있고, 지속적으로 OrderSend Error 130 및 OrderSend Error 138 오류를 생성하고, 시장이 반대 방향으로 이동하면 열린 주문을 삭제해도 전혀 작동하지 않습니다.

조언에 대한 큰 요청! 고맙습니다!

 
pvm117 :

정말 친애하는 전문가가 도움이되지 않을까요?

pvm117 20.10.2011 18:26

안녕하세요!

첫 번째 실험으로 저는 다음 알고리즘을 구현하기로 결정했습니다. 볼린저 밴드가 좁은 통로로 수렴한 후 얼마 후 시장이 위 또는 아래로 급격한 움직임이 있을 것으로 예상할 수 있습니다. Expert Advisor에서 나는 볼린저 밴드의 상태를 분석하고, 볼린저 밴드가 닫힐 때( 델타 포인트 ), 시장이 희망을 갖고 하향 방향(바닥 라인 아래의 스텝오픈 포인트)으로 매도 하기 위해 보류 주문 을 넣습니다. 이 방향으로 급격히 움직일 것입니다. 시장이 다른 방향으로 갔다면 이 주문을 삭제하기만 하면 됩니다.

알고리즘이 불안정하여 짧은 시간에 2개의 주문을 여는 경우도 있고, 지속적으로 OrderSend Error 130 및 OrderSend Error 138 오류를 생성하고, 시장이 반대 방향으로 이동하면 열린 주문을 삭제해도 전혀 작동하지 않습니다.

조언에 대한 큰 요청! 고맙습니다!

 OrderSend ( Symbol (), OP_SELL , 0.1 ,PriceOpen, 5 ,StopLoss,TakeProfit, 0 , 0 , 0 , Green ); //  открываем ордер на продажу

이것은 보류 중인 것이 아니라 시장 주문입니다.

따라서 시작 가격이 달라야 하며 삭제할 수 없으며(OrderDelete) 닫을 수만 있습니다.

 

이 스레드의 모든 감정가와 경험이 풍부한 독자에게 인사드립니다! 글쎄, 나를 도울 수 있는 사람 =)

주기성을 달성하는 가장 간단하고 "올바른" 방법은 무엇입니까? 즉, 단순화하기 위해 15분마다 특정 작업이 자동으로 수행되기를 원합니다.

제 경우에는 일부 통계와 함께 파일을 디스크에 저장하고 있습니다. 지금 나는 내가 원하는 것을 수행하는 스크립트를 가지고 있으며 말 그대로 20줄의 코드입니다. 이 20줄을 특정 간격으로 반복하려면 어떻게 해야 합니까? 내가 아는 한 MQL에는 타이머가 없습니다... 매 틱마다 일종의 검사를 수행하는 Expert Advisor를 사용해야 합니까?...

당신의 도움과 조언을 바랍니다)

 
여기요! M_30 H_1, D_1 등을 사용하는 지표를 제외하고 다중 통화 Expert Advisor 의 기간을 설정하는 다른 방법이 있습니까?
 
skyjet :
여기요! M_30 H_1, D_1 등을 사용하는 지표를 제외하고 다중 통화 Expert Advisor의 기간을 설정하는 다른 방법이 있습니까?

뭐가 문제 야?
 

안녕하세요.

이것은 여기에서 질문입니다. 노란색 선을 모멘텀 예측으로 사용하고 흰색 선을 이전 프레임의 긴 상승 추세 에 대한 OSM 예측으로 사용하는 방법을 조언하십시오.

여기서 파도의 피크 사이의 진폭을 결정하는 것은 어렵습니다. 일반적으로 더 파야 할 곳을 조언합니다.)


 
Sancho77 :

open 에서 첫 번째 것을 선택하십시오.

이 모든 것은 열린 위치 중 첫 번째 열린 위치와 마지막 열린 위치 사이의 거리를 포인트 단위로 확인하는 데 필요합니다.

급하게 다시 작성했는데 도움이 될까요? 확인하지 않았다...

 double PriceOpenFirstPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t= TimeCurrent ();
   double    r= 0 ;
   int       i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
         if ( OrderSymbol ()==sy || sy== "" ) {
             if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) {
               if (op< 0 || OrderType ()==op) {
                   if (mn< 0 || OrderMagicNumber ()==mn) {
                     if ( OrderOpenTime ()<t) {
                        t= OrderOpenTime ();
                        r= OrderOpenPrice ();
                        }
                     }
                  }
               }
            }
         }
      }
   return (r);
}

이런 시도...