초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 72

 
Vitalie Postolache :


나는 똑같이 말할 것이다. 논리와 친구하지 마십시오. 잉여 증거금과 위험 가치(약 3%라고 쓰여진 것처럼)를 기반으로 초기 로트를 즉시 계산하는 데 문제가 있습니까? 한 곳에서 모든 작업을 수행하는 이유는 무엇입니까?

여유 증거금 값을 취하고 위험을 곱하고 100으로 나누고 1랏에 대한 증거금 값으로 나눕니다. 다음은 지정된 여유 증거금 비율로 로트를 계산하는 가장 간단한 공식입니다. 로트를 변경하려면 DC에서 허용하는 최소-최대 로트를 초과하지 않도록 한 단계 더 고려해야 합니다.


어드바이저는 9개의 주문이 번갈아 가며 서로 겹쳐서 열리며 다음 주문에 2를 곱하여 마진이 버틸 수 없고 마지막 보류 주문 이 열리지 않을 가능성이 있는 짧은 시간에 거래한다고 합니다. , 따라서 마지막 최대 가능한 로트에서 계산해야 합니다. 5~10분 동안 가장 최적의 주문은 9개 주문이라고 계산했는데, 일반적으로 모든 주문이 열릴 경우의 마진을 계산하고 얻은 데이터를 기반으로 1차 로트를 역으로 계산해야 합니다. 주문하다.

 
if(OrdersTotal() >= OrderCount)
{
반품;
}
//----
if(r > 50 && p > m) // 매수 주문 개시 조건
{
ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",111,0,Green); //구매 주문 열기
}
//-----
if(r < 50 && p < m) //판매 주문을 열기 위한 조건
{
티켓 = OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",111,0,Blue);
}
//-----종료된 주문
for (int i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(티켓B,SELECT_BY_TICKET)==true)
{
if(r < 50 && p < m)
{
주문종료(티켓B,0.1,입찰가,5,빨간색);
}
}

}

얘들아 내가 어디에서 잘못 썼어? 예시에서 가져왔습니다. 주문이 종료되도록 코드를 올바르게 작성하는 방법을 알려주세요.

구매의 반대 조건에? 난 이미 내 뇌를 망가뜨렸어

 
funnyrain8 :
if(OrdersTotal() >= OrderCount)
{
반품;
}
//----
if(r > 50 && p > m) // 매수 주문 개시 조건
{
ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",111,0,Green); //구매 주문 열기
}
//-----
if(r < 50 && p < m) //판매 주문을 열기 위한 조건
{
티켓 = OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",111,0,Blue);
}
//-----종료된 주문
for (int i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(티켓B,SELECT_BY_TICKET)==true)
{
if(r < 50 && p < m)
{
주문종료(티켓B,0.1,입찰가,5,빨간색);
}
}

}

얘들아 내가 어디에서 잘못 썼어? 예시에서 가져왔습니다. 주문이 종료되도록 코드를 올바르게 작성하는 방법을 알려주세요.

구매의 반대 조건에? 난 이미 내 뇌를 망가뜨렸어


 if ( OrdersTotal ()>=OrderCount)   //Обрати внимание на эту конструкцию
     {                             //
       return ;
     }
//---- 
   if (r> 50 && p>m) //условия открытия ордера на покупку
     {
       for ( int i= 1 ; i<= OrdersTotal (); i++)
        {
         if ( OrderSelect (ticketB, SELECT_BY_TICKET )== true )
           {
             if ( OrderType ()== OP_SELL )
              {
               OrderClose ( OrderTicket (), 0.1 , Ask , 5 ,Red);
              }
           }
        }
      ticketB= OrderSend ( Symbol (), OP_BUY , 0.1 , Ask , 5 , 0 , 0 , "" , 111 , 0 ,Green); //открыnие ордера на покупку     

     }

//-----     
   if (r< 50 && p<m) //условия открытия ордера на продажу
     {
     for ( int i= 1 ; i<= OrdersTotal (); i++)
        {
         if ( OrderSelect (ticketB, SELECT_BY_TICKET )== true )
           {
             if ( OrderType ()== OP_BUY )
              {
               OrderClose ( OrderTicket (), 0.1 , Bid , 5 ,Red);
              }
           }
        }
      ticketS= OrderSend ( Symbol (), OP_SELL , 0.1 , Bid , 5 , 0 , 0 , "" , 111 , 0 ,Blue);
     }

이 같은
 
funnyrain8 :
if(OrdersTotal() >= OrderCount)
{
반품;
}
//----
if(r > 50 && p > m) // 매수 주문 개시 조건
{
ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",111,0,Green); //구매 주문 열기
}
//-----
if(r < 50 && p < m) //판매 주문을 열기 위한 조건
{
티켓 = OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",111,0,Blue);
}
//-----종료된 주문
for (int i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(티켓B,SELECT_BY_TICKET)==true)
{
if(r < 50 && p < m)
{
주문종료(티켓B,0.1,입찰가,5,빨간색);
}
}

}

얘들아 내가 어디에서 잘못 썼어? 예시에서 가져왔습니다. 주문이 종료되도록 코드를 올바르게 작성하는 방법을 알려주세요.

구매의 반대 조건에? 난 이미 내 뇌를 망가뜨렸어


티켓으로 주문을 선택한 경우 루프에서 반복할 필요가 없습니다. 고문의 전체 코드를 게시하면 실수를 한 부분에서 명확하지 않습니다. 예, 코드를 올바르게 배치 하십시오. 메시지 에 코드를 삽입 하는 SRC 버튼이 있습니다.
 
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict     
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int ticketB,ticketS;
void OnTick ()
//------------------------------------------------------------------------------------------------
{
double p = iClose ( "EURUSD" , PERIOD_M15 , 0 );                                     //показание текущей цены 
double r = iRSI   ( "EURUSD" , PERIOD_M15 , 21 , PRICE_CLOSE , 0 );                     //значение индюка RSI
double m = iMA    ( "EURUSD" , PERIOD_M15 , 89 , 0 , MODE_EMA , PRICE_CLOSE , 0 );           //значение индюка МА
int     OrderCount  = 1 ;

//---------------ПОДСЧЕТ ОРДЕРОВ------------------------------------------------------------------
if ( OrdersTotal () >= OrderCount)
          {
             return ;
          }   
//-------------ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ--------------------------------------------------------------------
/*if(r > 50 && p > m)                                                        //условия открытия ордера на покупку
    {   
        ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",111,0,Green);         
    }
//------------ЗАКРЫТИЕ ОРДЕРА НА ПРОДАЖУ--------------------------------------------------------
if(r<50 && p<m)                                                           
     {
      for(int i=1; i<=OrdersTotal(); i++)
        {
         if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
           {
            if(OrderType()==OP_BUY)
              {
                  ticketB = OrderClose(OrderTicket(),0.1,Bid,5,Red);
              }
           }
        }
     }*/
//------------------ОТКРЫТИЕ ОРДЕРА НА ПРОДАЖУ---------------------------------------------------------
if (r < 50 && p < m)                                                         //условия открытия ордера на продажу
    {
        ticketS = OrderSend ( Symbol (), OP_SELL , 0.1 , Bid , 5 , 0 , 0 , "" , 111 , 0 ,Blue); 
    } 
//---------------------ЗАКРЫТИЕ ОРДЕРА НА ПРОДАЖУ---------------------------------------------------------
if (r> 50 && p>m) 
     {
   for ( int i= 1 ; i<= OrdersTotal (); i++)
        {
         if ( OrderSelect (ticketS, SELECT_BY_TICKET )== true )
           {
             if ( OrderType ()== OP_SELL )
              {
                  ticketS = OrderClose ( OrderTicket (), 0.1 , Ask , 5 ,Red);
              }
           }
        }
     }
}
//+------------------------------------------------------------------+
SRC에 감사드립니다), 이것이 제가 쓸 수 있는 모든 것의 모습입니다. 이렇게 생겼습니다. 양초가 도마 아래에서 닫히고 rsi가 50 미만이고 반대 조건에서 주문이 마감될 때 판매가 발생해야 합니다. 마감 후 같은 시간에 구매가 있어야 하고 마감 후에 하나의 주문이 있어야 하고 더 이상은 이런 식으로 주기적으로 반복됩니다... 하지만 지금은 하나의 주문이 열려 있고 그게 다이고 정류장이 작동하지 않습니다...
 
funnyrain8 :
SRC에 감사드립니다), 이것이 제가 쓸 수 있는 모든 것의 모습입니다. 이렇게 생겼습니다. 양초가 도마 아래에서 닫히고 rsi가 50 미만이고 반대 조건에서 주문이 마감될 때 판매가 발생해야 합니다. 마감 후 같은 시간에 구매가 있어야 하고 마감 후에 하나의 주문이 있어야 하고 더 이상은 이런 식으로 주기적으로 반복됩니다... 하지만 지금은 하나의 주문을 열고 그게 다이고 중지가 작동하지 않습니다...


제 스타일로 다시 작성했습니다 이해 바랍니다.

 //+------------------------------------------------------------------+
//|                                                   funnyrain8.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link        "https://www.mql5.com/ru/users/sergey1294"
#property version    "1.00"
#property strict

input int              MagicNumber  = 20110315 ;       // Номер копии
input string           CommentOrder = "Origenal" ;     // Комментарий к ордеру
input int              Slippage= 100 ;             // Проскальзование (Пипс)
input double           Lot= 0.01 ;           // Объем лота 
input int              SignalBar= 0 ; // Сигнальный бар 

sinput string             s1= NULL ; // Setting indicator slow МА
input int                 ma_period= 89 ;     // Period
input ENUM_MA_METHOD      ma_method= MODE_EMA ; //Method calculation
input ENUM_APPLIED_PRICE ma_price= PRICE_CLOSE ; //Price calculation

sinput string             s2= NULL ; // Setting indicator RSI
input int                 rsi_period= 21 ; // Period
input ENUM_APPLIED_PRICE rsi_price= PRICE_CLOSE ; //Price calculation
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (TotalOrder()== 0 )OrderOpen(GetSignal());
   else OrderClose (GetSignal());
  }
//+------------------------------------------------------------------+
int GetSignal()
  {
   double rsi = iRSI ( _Symbol , PERIOD_CURRENT ,rsi_period,rsi_price,SignalBar);                     //значение индюка RSI
   double ma = iMA    ( _Symbol , PERIOD_CURRENT ,ma_period, 0 ,ma_method,ma_price,SignalBar);           //значение индюка МА

   if ( Close [SignalBar]>ma && rsi> 50.0 ) return ( OP_BUY );
   if ( Close [SignalBar]<ma && rsi< 50.0 ) return ( OP_SELL );
   return ( WRONG_VALUE );
  }
//+------------------------------------------------------------------+
int TotalOrder()
  {
   int value= 0 ;
   int total= OrdersTotal ();
   for ( int i=total- 1 ; i>= 0 ; i--)
     {
       if (! OrderSelect (i, SELECT_BY_POS )) continue ;
       if ( OrderSymbol ()!= _Symbol ) continue ;
       if ( OrderMagicNumber ()!=MagicNumber) continue ;
       if ( OrderType ()> 1 ) continue ;
      value++;
     }
   return (value);
  }
//+------------------------------------------------------------------+
void OrderOpen( int type)
  {
   if (type== WRONG_VALUE ) return ;
   double price_open=(type== OP_BUY )? NormalizeDouble ( Ask , _Digits ): NormalizeDouble ( Bid , _Digits );
   int ticket= OrderSend ( _Symbol ,type,Lot,price_open,Slippage, 0 , 0 ,CommentOrder,MagicNumber);
   if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
  }
//+------------------------------------------------------------------+
void OrderClose ( int type)
  {
   if (type== WRONG_VALUE ) return ;
   int total= OrdersTotal ();
   for ( int i=total- 1 ; i>= 0 ; i--)
     {
       if (! OrderSelect (i, SELECT_BY_POS )) continue ;
       if ( OrderMagicNumber ()!=MagicNumber) continue ;
       if ( OrderSymbol ()!= _Symbol ) continue ;
       if ( OrderType ()!=type) continue ;
       double price_close=(type== OP_BUY )? NormalizeDouble ( Bid , _Digits ): NormalizeDouble ( Ask , _Digits );
       bool res= OrderClose ( OrderTicket (), OrderLots (),price_close,Slippage);
       if (!res) Print ( "Ошибка закрытия ордера № - " , GetLastError ());
     }
  }
//+------------------------------------------------------------------+

...

 
Sergey Gritsay :


제 스타일로 다시 작성했습니다 이해 바랍니다.

...


오, 폐쇄 빼고는 거의 다 쓴 줄 알았는데, 아직 공부하고 또 공부해야 하는군요... 지금은 정말 감사합니다. 최소한 어떻게 해야할지 예를 들어보면 가능할 것입니다... 틴, 다시 한번 감사합니다)
 
안녕하세요. 저는 Metatrader 5 프로그램을 다운로드했고 2개의 시그널을 구독했습니다. 내 계정 잔액은 $20입니다. 가상 호스팅 을 설정하려고 하지만 아무 것도 작동하지 않습니다. 내비게이터를 누릅니다-거래 계정에 연결합니다. 테이블에 그러한 가상 호스팅 탭도 없습니다. 스크린샷을 보내드립니다. 공유 호스팅에 어떻게 연결할 수 있나요?
파일:
3p46y0.jpg  273 kb
g4ppe22.jpg  264 kb
 
Жанна Платонова :
안녕하세요. 저는 Metatrader 5 프로그램을 다운로드했고 2개의 시그널을 구독했습니다. 내 계정 잔액은 $20입니다. 가상 호스팅을 설정하려고 하지만 아무 것도 작동하지 않습니다. 내비게이터를 누릅니다-거래 계정에 연결합니다. 테이블에 그러한 가상 호스팅 탭도 없습니다. 스크린샷을 보내드립니다. 공유 호스팅에 어떻게 연결할 수 있나요?

기본 메뉴 에서 도움말을 클릭합니다.
 
안녕하세요. 나는 그런 질문이 있습니다-다른 회사에서 (와인을 통해) 배달 된 모든 mt4 플랫폼의 양귀비 (시에라)에서 동일한 결함-터미널, 아래의 일반 위치에서 해제하면 자유 창처럼 움직입니다. - 축소되고 완전히 불가능합니다. 자동 정렬 기능을 비활성화해도 아무 효과가 없습니다. 터미널을 원래 위치로 되돌리는 것은 절대 불가능합니다. 그냥 붙지 않고 더 이상 열리지 않습니다. 질문이 있습니다. 누군가가 키보드 단축키나 전체 인터페이스를 일반 위치로 되돌리는 버튼을 알고 있을 것입니다. 유브이와 함께.