[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 867

 

친애하는 전문가들. 저는 프로그래밍을 배우고 있습니다. 첫 번째 Expert Advisor를 작성했지만 거래가 시작되고 더 이상 작업을 수행하지 않습니다. 로그는 오류를 기록하지 않습니다. 당신의 도움이 필요합니다!

 //+------------------------------------------------------------------+
//|                                                Monetny dvor1.mq4 |
//|                                                            fanat |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "fanat"
#property link       "http://www.metaquotes.net"

extern double Lot= 0.1 ;           //Рабочий лот
extern double TakeProfit= 149 ;     //
extern double StopLoss= 275 ;       //          
extern int Total= 1 ;             //Колличество ордеров   
//+------------------------------------------------------------
int start()
{ //1
if (TakeProfit< 10 )
{ //2 
   Alert ( "Ошибка,TakeProfit слишком близко" );
   return ;
} //2
     
if (StopLoss< 10 )
{ //2
   Alert ( "Ошибка,StopLoss слишком близко" );
   return ;
} //2

if (Total< 1 )
{ //2
   Alert ( "Ошибка, неизвестно колличество ордеров" );
   return ;
} //2
bool Buy=false;
bool Sell=false;
bool BuyClose=false;
bool SellClose=false;                                                                             
if (iHigh( NULL , PERIOD_M15 , 2 )<iClose( NULL , PERIOD_M15 , 1 ))Buy=true;
if (iLow( NULL , PERIOD_M15 , 2 )>iClose( NULL , PERIOD_M15 , 1 ))Sell=true;
if (iClose( NULL , PERIOD_M15 , 2 )>iClose( NULL , PERIOD_M15 , 1 ))BuyClose=true;
if (iClose( NULL , PERIOD_M15 , 2 )<iClose( NULL , PERIOD_M15 , 1 ))SellClose=true;
if (Buy==false&&Sell==false&&BuyClose==false&&SellClose==false) return ;
int err;                                                 //
int ticket;                                               //
int Order_Count[ 6 ];                                       //
int OP=- 1 ;                                               //
ArrayInitialize (Order_Count, 0 );                           //
                                                           //Блок учета ордеров
for ( int i= 1 ; i<= OrdersTotal (); i++)                       //
{ //2                                                     //
   if ( OrderSelect (i- 1 , SELECT_BY_POS)==true)               // 
  Order_Count[OrderType()]++;                             //
   if (OP!=- 1 ) return (Order_Count[OP]);                     //                         
} //2
   if ( OrderSelect (ticket,SELECT_BY_TICKET))                 //Закрытие ордеров Sell
{ //2                                                     // 
   if ((OrderType()== 1 )&&(Buy==true||SellClose==true))       //  
  { //3                                                    //
  OrderClose(ticket,Lot,Ask, 4 );                           //
  err= GetLastError ();                                     //Обработка ошибок 
   if (err== 0 )                                               //
   return ;                                                 //  
   else                                                      //
  { //4                                                    //
   Sleep ( 1000 );                                             //
   Alert (err);                                             //
  } //4                                    
  } //3
} //2 
   if ( OrderSelect (ticket,SELECT_BY_TICKET))                 //Закрытие ордеров Buy
{ //2                                                     //
   if ((OrderType()== 0 )&&(Sell==true||BuyClose==true))       // 
  { //3                                                    //  
  OrderClose(ticket,Lot,Bid, 4 );                           // 
  err= GetLastError ();                                     //Обработка ошибок
   if (err== 0 )                                               //
   return ;                                                 //
   else                                                      //
  { //4                                                    //
   Sleep ( 1000 );                                             //
   Alert (err);                                             //
  } //4
  } //3
} //2 
if (Order_Count[OP_BUY]>=Total&&Order_Count[OP_SELL]>=Total) return ;                  
                                                                                      
if (Order_Count[OP_BUY]<Total&&Order_Count[OP_SELL]== 0 &&Buy==true)                     //Открытие ордеров Buy
{ //2                                                                                 //
   OrderSend ( Symbol (), OP_BUY, Lot, Ask, 4 , Ask-StopLoss* Point , Ask+TakeProfit* Point ); // 
  err= GetLastError ();                                                                 //Обработка ошибок
   if (err== 0 )                                                                           //
   return ;                                                                             //
   else                                                                                  //
  { //3                                                                                // 
   Sleep ( 1000 );                                                                         //
   Alert (err);                                                                         //
  } //3
} //2         
           
if (Order_Count[OP_SELL]<Total&&Order_Count[OP_BUY]== 0 &&Sell==true)                   //Открытие ордеров Sell 
{ //2                                                                                 //
   OrderSend ( Symbol (), OP_SELL, Lot, Bid, 4 , Bid+StopLoss* Point , Bid-TakeProfit* Point ); //
  err= GetLastError ();                                                                 //Обработка ошибок
   if (err== 0 )                                                                           //
   return ;                                                                             //
   else                                                                                  //
  { //3                                                                                //
   Sleep ( 1000 );                                                                         //
   Alert (err);                                                                         //
  } //3
} //2

return ;
} //1
 

거래를 금지하는 조건을 코딩하는 방법을 알려주세요

예: iStochastic>80이면 nottreid(거래 금지(또는 포지션 개설 금지))?

 
fanat :

친애하는 전문가들. 프로그래밍을 배우고 있습니다. 첫 번째 Expert Advisor를 작성했지만 거래가 시작되고 더 이상 작업을 수행하지 않습니다. 로그는 오류를 기록하지 않습니다. 당신의 도움이 필요합니다!


지옥 같은 혼합물이지만 작동합니다 (테스터에서)

 
Vinin :


지옥 같은 혼합물이지만 작동합니다 (테스터에서)


거래를 여는 조건이 어리석다는 것을 이해합니다.
 
Vinin :


지옥 같은 혼합물이지만 작동합니다 (테스터에서)


빌드 226. 테스터에서도 작동하지 않습니다. 왠지 말해줘?
 
fanat :

빌드 226. 테스터에서도 작동하지 않습니다. 왠지 말해줘?

왜 당신을 위해 작동하지 않는지 모르겠습니다. 작업 코드
 
fanat :

빌드 226. 테스터에서도 작동하지 않습니다. 왠지 말해줘?

동일한 Build 226 다른 곳에서 터미널을 다운로드하십시오.

 
Vinin :

왜 당신을 위해 작동하지 않는지 모르겠습니다. 작업 코드

이해했다. 고맙습니다. MT를 다시 설치해 보겠습니다.
 

친애하는 전문가들. 오늘 아침에 코드를 보냈습니다. 고문 자체에 의해 거래를 마감하기 위한 조건이 있습니다. 그러나 그는 TP 또는 SL로만 거래를 마감합니다. 그리고 만약 TP와 SL이 900을 건다면 그것은 단 하나의 거래만 열면 끝입니다. 도와주세요.

 
fanat :

친애하는 전문가들. 오늘 아침에 코드를 보냈습니다. 고문 자체에 의해 거래를 마감하기 위한 조건이 있습니다. 그러나 그는 TP 또는 SL로만 거래를 마감합니다. 그리고 만약 TP와 SL이 900을 건다면 그것은 단 하나의 거래만 열면 끝입니다. 도와주세요.


그리고 티켓이 항상 0인 경우에는 어떻게 될까요? 먼저 무언가에 할당되어야 합니다.

예를 들어

   int ticket;        

   for ( int i= 0 i< OrdersTotal (); i++)                      
       if ( OrderSelect (i, SELECT_BY_POS))
         ticket=OrderTicket();