포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 869

 
Top2n :

실례합니다, 같은 것에 백 번을 적용하는 것은 부끄러운 일입니다.

글쎄, 거의 한 달 동안 나는 문 앞에서 숫양처럼 보였다. 나는 그것을 얻지 못한다.

작업은 이동 평균이 13인 더 작은 주문의 이동 평균을 계산하는 것입니다.

즉, 13을 기반으로 기간 12를 계산합니다.

계산하기 쉽습니다: Y(N)=1/N*(Y(N+1)*(N+1)-X[N]), 여기서 Y(i)는 MA(i)의 값입니다. 제로 바, X[j ] - j번째 바의 가격 값; 이것은 계산상의 말도 안되지만 어쨌든 미래를 내다볼 수는 없습니다.
 

안녕하세요! 존경하는 구루 중 한 명인 check, pliz, 나의 첫 번째 조언자의 시작. 진행이 가능한가요? 뭔가 놓친 게 아닐까요? 나는 어떤 세부 사항에 대해 매우 감사 할 것입니다. 그리고 한 가지 더: 포럼 어딘가에서 한 위치만 여는 방법을 보았지만 복사하지 않았고 지금은 찾을 수 없습니다. 도와주세요.

고맙습니다!

// 트라이얼 EA

//------------------------------------------------ --------------------

//------입력 데이터:--------------------------------------- --------------------

입력 더블 로트 = 0.1; // 많은

입력 int MovingPeriod = 5; // 결제 기간 MA

입력 int MovingShift = 0; // 시프트 MA

입력 int InpBandsPeriod=10; // 기간 볼린저 밴드

입력 int InpBandsShift=0; // 볼린저 밴드 이동

입력 이중 InpBandsDeviations=2.0; // 편차 볼린저 밴드

int K_Period = 30을 입력하십시오. // %K 확률적 기간

입력 intD_Period=10; // %D 확률적 기간

입력 int Slowdawn = 8; // 확률적 감속

입력 색상 clMainStoch = 노란색; // 스토캐스틱 메인 라인의 색상

입력 색상 clSignalStoch =빨간색; // 확률적 신호선 색상

// ------전역 변수 선언:--------------------------------------- ------ ---

이중 MA_0, MA_1, MA_2; // 0, 1 및 2 막대의 MA 값

이중 MB_0, MB_1, MB_2; // 0, 1, 2 막대에서 평균 볼린저 값

더블ExtUpperBuffer[]; // 상위 볼린저 라인 값

이중 ExtLowerBuffer[]; // 낮은 볼린저 라인 값

이중 Delta_0, Delta_1; // 상한값과 하한값의 차이...

// ...0 및 1 막대에서 볼린저 라인

이중 Yellow_0, Yellow_1, Yellow_2; // 0, 1 및 2 막대의 MAIN 값

이중 Red_0, Red_1, Red_2; // 0, 1, 2 바의 SIGNAL 값

//-------가다!--------------------------------------- ------------------------

int start() //사양. 시작 기능

{

//MA 표시기 기능 참조

MA_0=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);

MA_1=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1);

MA_2=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,2);

// 볼린저 밴드 함수 호출

MB_0=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBands편차,PRICE_CLOSE,0);

MB_1=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBands편차,PRICE_CLOSE,1);

MB_2=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBands편차,PRICE_CLOSE,2);

Delta_0=iBands(ExtUpperBuffer[0]-ExtLowerBuffer[0]);

Delta_1=iBands(ExtUpperBuffer[1]-ExtLowerBuffer[1]);

// 스토캐스틱 함수 호출

Yellow_0=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_MAIN,0);

Yellow_1=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_MAIN,1);

Yellow_2=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_MAIN,2);

Red_0=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_SIGNAL,0);

Red_1=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_SIGNAL,1);

Red_2=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_SIGNAL,2);

//-------확률적 상황:-------------------------------------- - ---------------

//시장은 과매수

이중 MOB()=(Yellow_0>=80 && Red_0>=80); //로컬 변수

//시장은 과매도 상태입니다.

이중 MOS()=(Yellow_0<=20 && Red_0<=20); //로컬 변수

//시장은 괜찮다

이중 MN()=(20<노란색_0<80 && 20<빨간색_0<80); //로컬 변수

//중요한 상황

더블 MC1()=(20<노란색_0<80 && 빨간색_0<=20); //로컬 변수

이중 MC2()=(20<노란색_0<80 && 빨간색_0>=80); //로컬 변수

이중 MC3()=(20<빨간_0<80 && 노란색_0<=20); //로컬 변수

이중 MC4()=(20<빨간색_0<80 && 노란색_0>=80); //로컬 변수

//-------포지션을 여는 (my) 주문 예시-------------------------------- --------------------


if (Delta_0 > Delta_1 && MOB()==true) // 시장은 과매수이지만 델타는 확장되고 있습니다.

{ if (MB_2 > MB_1 && MB_1 < MB_0) //볼린저 하락

OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point);//구매 주문 열기

경고(GetLastError()); //에러 메시지

Alert("Lots("Lots"),price("Ask").")에 의해 열린 위치; // 구매 메시지

 

추적 중: BUY(및 CELL) 포지션은 다양한 조건 및 포지션이 개설된 조건에 따라 개설될 수 있습니다. (ex. BYE)에는 자체 종료 조건이 있습니다.

이것을 MKL의 언어로 전달하는 방법은 무엇입니까?

 
rapid_minus :

추적 중: BUY(및 CELL) 포지션은 다양한 조건 및 포지션이 개설된 조건에 따라 개설될 수 있습니다. (예: BYE)에는 자체 종료 조건이 있습니다.

이것을 MKL의 언어로 전달하는 방법은 무엇입니까?

주기에서 주문을 선택합니다 . 이것이 Bai이고 나머지 데이터(심볼, 마법, 다른 것)가 이것이 "자체 닫기 조건"에서 닫힐 필요가 있는 기준을 충족하는 경우 "자체 닫기 조건"이 있으면 닫습니다. .
 
artmedia70 :
주기에서 주문을 선택합니다. 이것이 Bai이고 나머지 데이터(심볼, 마법, 다른 것)가 이것이 "자체 닫기 조건"에서 닫힐 필요가 있는 기준을 충족하는 경우 "자체 닫기 조건"이 있으면 닫습니다. .

나에게 조금 모호하지만, 파고들면 이해할 것이라고 생각합니다. 소비에트 나라의 어떤 동지들처럼 지식의 높이에서 등을 돌리지 않고 가르치지 않은 것에 대해 대단히 감사합니다.

나는 다음과 같이 닫는다고 생각했다.

//-------마감 바인딩을 사용하여 포지션을 여는 (my) 주문의 예(티켓으로)---------------------------------------- - --------------------------

//구매 주문을 여는 지역 변수(라인 63 대신)

int Ticket_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point));

//-------그러면 이 특정 주문에 대한 마감은 다음과 같을 수 있습니다.-------------------------------------------- -- ----------

if (Ticket_1()==true) //1번 주문이 열리면...

{ if (Yellow_0>Red_0 && (Yellow_0-Red_0)<(Yellow_1-Red_1)) //노란색이 빨간색 이상, 수축(조건)

{ if (MA_2 < MA_1 && MA_1 > MA_0);} //중간의 위쪽 나누기(조건)

else (Yellow_0>Red_0 && (Yellow_0-Red_0)>(Yellow_1-Red_1)) //빨간색 위의 노란색, 확장(대체 조건)

{ if (MB_2 < MB_1 && MB_1 > MB_0);} //상한 볼린저 브레이크(조건)

bool Ans=OrderClose(Ticket,Lot,Bid,0); //...주문 닫기(로컬 변수)

Alert("lot("Lots"),price("Ask"). 응답을 기다리는 중입니다.");

if (Ans==true) // 알았습니다 :)

{

Alert("마감된 주문 BY lot("Lots"), 종가("Bid");

부서지다; // 포지션 클로징 사이클 종료

}


}

글쎄요, 이전 포스트에 따라 분석도 부탁드립니다. 끈질기게 해서 미안하지만, 당신이 책임을 지고 있는 유일한 사람이군요... 감사합니다!

 
//-------Пример(мой) приказа на открытие позиции с привязкой закрытия (по тикету)----------------------------------------------------- 
                                                      
                                                      //Локальная переменная, открывающая ордер БАЙ(вместо строки 63)
   int Ticket_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point));
   
        //-------Тогда закрытие именно для этого приказа может быть таким:-----------------------------------------------------
    
    if (Ticket_1()==true)                              //Если был открыт ордер №1, то...
     { if (Yellow_0>Red_0 && (Yellow_0-Red_0) < (Yellow_1-Red_1)) //Желтая выше красной, сужение(условие)
        { if (MA_2 < MA_1 && MA_1 > MA_0);}                      //Верхний перелом Средней (условие)
       else (Yellow_0>Red_0 && (Yellow_0-Red_0)>(Yellow_1-Red_1)) //Желтая выше красной, расширение(альтерн.условие)
         { if (MB_2 < MB_1 && MB_1 > MB_0);}                      //Верхний перелом Боллинджера (условие)
       
       bool Ans=OrderClose(Ticket,Lot,Bid,0);          //...закрытие ордера (лок.переменная)                                               
   Alert("Попытка закрыть ордер БАЙ лотом("Lots"),цена("Ask"). Ожидание ответа..");
   if (Ans==true)                                     // Получилось :)
        {
         Alert ("Закрыт ордер БАЙ лотом("Lots"),цена закрытия("Bid");
         break;                                       // Выход из цикла закрытия позиции
        }

     }
훨씬 읽기 쉽습니다. 죄송합니다.
 
rapid_minus :

나에게 조금 모호하지만, 파고들면 이해할 것이라고 생각합니다. 소비에트 나라의 어떤 동지들처럼 지식의 높이에서 등을 돌리지 않고 가르치지 않은 것에 대해 대단히 감사합니다.

나는 다음과 같이 닫는다고 생각했다.

...

글쎄요, 이전 포스트에 따라 분석을 해주세요. 끈질기게 해서 미안하지만, 당신이 책임을 지고 있는 유일한 사람이군요... 감사합니다!

글쎄, 모든 것이 어떻게 든 당신에게 어두컴컴합니다.

1. 매수 주문 마감 조건 발생 사실 확인

2. 한 주기에서 열려 있는 모든 포지션을 살펴보고 필요한 매수 주문을 찾으면 이를 닫습니다.

다음은 루프의 예입니다.

 void ClosePositions( string symbol, int type, int magic) {
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {       // цикл по открытым ордерам
       if ( OrderSelect (i,SELECT_BY_POS)) {         // выбираем ордер по индексу
         if (OrderMagicNumber()!=magic) continue ; // если магик не искомый - ищем дальше
         if (OrderSymbol()!=symbol)     continue ; // если символ не тот - ищем дальше
         if (OrderType()!=type)         continue ; // если тип ордера не тот - ищем дальше
         // здесь, если ордер выбран, то он соответствует нужным критериям,
         // вызов функции закрытия выбранного ордера по тикету
         }
      }   
   }

즉, 현재 기호(Expert Advisor가 실행 중인 차트에서)와 매직 100500(예:)으로 매수 주문을 마감하려면 다음과 같이 함수를 호출해야 합니다.

ClosePositions( Symbol (),OP_BUY, 100500 );

숫자 100500을 쓸 필요는 전혀 없습니다. 일반적으로 매직은 변수 EA에 이미 설정되어 있습니다(예: int Magic = 100500; 그런 다음 100500 대신 Magic을 입력해야 합니다.

선택한 포지션을 청산해야 하는 싸이클에서는 티켓으로 오더를 청산하는 함수에 대한 호출이 있어야 하기 때문에 아무 것도 쓰지 않았습니다. 일반적 으로 무역 서버 반환 코드 를 처리하는 완전한 기능의 호출입니다. 확인을 위해 간단한 명령을 입력하여 선택한 주문을 닫을 수 있습니다. OrderClose();

 
rapid_minus :
훨씬 읽기 쉽습니다. 죄송합니다.

중복을 생성하지 않도록 이전 게시물을 편집할 수 있는 기회가 여전히 있습니다.)

 
evillive :
중복을 생성하지 않도록 이전 게시물을 편집할 수 있는 기회가 여전히 있습니다.)
시도했지만 SRC가 더 이상 삽입되지 않습니다.
 
artmedia70 :

글쎄, 모든 것이 어떻게 든 당신에게 어두컴컴합니다.

1. 매수 주문 마감 조건 발생 사실 확인

2. 한 주기에서 열려 있는 모든 포지션을 살펴보고 필요한 매수 주문을 찾으면 이를 닫습니다.

다음은 루프의 예입니다.

즉, 현재 기호(Expert Advisor가 실행 중인 차트에서)와 매직 100500(예:)으로 매수 주문을 마감하려면 다음과 같이 함수를 호출해야 합니다.

숫자 100500을 쓸 필요는 전혀 없습니다. 일반적으로 매직은 변수 EA에 이미 설정되어 있습니다(예: int Magic = 100500; 그런 다음 100500 대신 Magic을 입력해야 합니다.

선택한 포지션을 청산해야 하는 싸이클에서는 티켓으로 오더를 청산하는 함수에 대한 호출이 있어야 하기 때문에 아무 것도 쓰지 않았습니다. 일반적으로 이것은 무역 서버 반환 코드를 처리하는 본격적인 기능의 호출입니다. 확인을 위해 간단한 명령을 입력하여 선택한 주문을 닫을 수 있습니다. OrderClose();


고맙습니다. 그러나 내가 알기로는 주문을 열 때 자동으로 마법이 할당됩니다. 따라서 마법으로 어떤 조건에서 주문을 열 수 있는지 결정할 수 없으므로 어떤 조건에서 주문을 닫을지 모릅니다.
사유: