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

 
FoxUA :

예, 아마도 제가 정확하게 표현하지 않았을 것입니다. 예를 들어 BalansEURUSD를 변경해야 주어진 순간에 "BalansEURUSD = 5%"라는 용어로 프로 또는 손실에 대한 데이터를 얻을 수 있습니다.

그래서 여러 쌍에 대해 funene과 dolorena에 대해 더 말합시다.

한 번


이것은 더 어렵지만 다음을 계산할 수 있습니다.

매도 주문을 위해

이익=NormalizeDouble((OrderOpenPrice()-Ask)*MarketInfo("EURUSD",MODE_TICKVALUE)*OrderLots()/Point,2);

margin=NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck("EURUSD",OP_SELL,OrderLots(),2);

구매:

이익=NormalizeDouble((Bid-OrderOpenPrice())*MarketInfo("EURUSD",MODE_TICKVALUE)*OrderLots()/Point,2);

margin=NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck("EURUSD",OP_BUY,OrderLots(),2);

이것은 주문의 이익 + 이 주문에 대한 마진을 계산하기 위한 완전한 공식이므로 마진을 고려해야 하기 때문입니다. 주문이 마감되면 해제된 마진이 잔액에 추가되고 금액이 증가하지만 실제 이익이 없을 수 있습니다.

 

얘들 아, 하나의 보류 주문 이 실행되면 다른 주문이 들어가도록 만드는 방법을 알려주십시오 ???? 셀렉트 오더를 통해서 안되는걸 해봤는데...........
~ 후에
주문 유형 == 구매, // 구매가 바이스톱이었던 곳
보류 중인 주문 열기 // (열지 않음)

 
VOLDEMAR :

얘들 아, 하나의 보류 주문이 실행되면 다른 주문이 들어가도록 만드는 방법을 알려주십시오 ???? 셀렉트 오더를 통해서 안되는걸 해봤는데...........
~ 후에
주문 유형 == buy, // Buy가 Buystop이었던 곳
보류 중인 주문 열기 // (열지 않음)


옵션으로 가장 먼저 떠오른 것은 - 모든 시장 및 대기 중인 주문에 대한 주기의 선택 주문을 통해 시장에 시장 주문(매수 또는 매도)이 있는지 확인하고 있는 경우 대기 중인 주문(기존에 설정된 )이 하나의 시장이 되면 다음 주문을 하십시오(필요한 또 다른 보류 주문, 예를 들어 구매 주문이 시장에 있는 경우 우회 주문 등). 나는 독서를 추천한다 -

alpari 웹사이트에서 - 외환 교육 - 트레이더 교과서 - 자동 거래 MKL4(패널 왼쪽에 있음) - 트레이딩 어드바이저 - (주문 선택 기능, 주문 보내기, 조건부 연산자 등)

http://www.alpari.ru/ru/school/textbook/autotrading/expert_advisors/ - 간결하고 유익한...

 

프로그래밍 방법을 배우려고 합니다. EA에서 해당 조건이 충족되지 않는 것 같습니다.

동안 (B*Point >zmm)
Comment("차이값", B);
OrderSend (Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);

이 상황을 어떻게 확인할 수 있습니까?어떤 방법이 있습니까? 그리고 유휴 틱으로 가능합니까?

 

친애하는 전문가 여러분! 어드바이저 작성법을 배우고 있습니다. 작동하지만 전부는 아닙니다. 주문 수정 및 마감 블록이 작동하지 않습니다. 이유를 찾을 수 없습니다. 도와주세요.

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

extern int TakeProfit= 484 ; //
extern int StopLoss= 89 ;     //
extern bool BStop=true;     //Включение безубытка
extern int Stop= 90 ;         //            
//+------------------------------------------------------------
int start()
{ //1
   
if (TakeProfit< 10 ){ Alert ( "Ошибка,Take слишком близко" ); return ;}
if (StopLoss< 10 ){ Alert ( "Ошибка,StopLoss слишком близко" ); return ;}
   
bool Buy=false;
bool Sell=false;
if (Close[ 0 ]>High[ 1 ])Buy=true;
if (Close[ 0 ]<Low[ 1 ])Sell=true;

int err;
int Order_Count[ 6 ];
int OP=- 1 ;
ArrayInitialize (Order_Count, 0 );                             
         
for ( int i= 0 ;i<= OrdersTotal ();i++)       //
  { //2                                   // Блок учета ордеров
   if ( OrderSelect (i,SELECT_BY_POS)==true) //
    { //3                                 //
     Order_Count[OrderType()]++;         //
     if (OP!=- 1 ) return (Order_Count[OP]);   //
    } //3
  } //2  
     if ( OrdersTotal ()> 0 )
      { //2
       if (BStop==true&&OrderOpenPrice()!=OrderStopLoss())                                                 //Модификация ордеров
        { //3                                                                                             //
         if ((OrderType()== 0 &&(Ask-OrderOpenPrice())>Stop)||(OrderType()== 1 &&(OrderOpenPrice()-Bid)>Stop)) //
          { //4                                                                                           // 
           int ticket=OrderTicket();                                                                     // 
           double Price=OrderOpenPrice();                                                                 //
           double SL=OrderOpenPrice();                                                                   //
           double TP=OrderTakeProfit();                                                                   //
           bool Ans=OrderModify(ticket,Price,SL,TP, 0 );                                                   //
           
           if (Ans==false){err= GetLastError (); Alert (err); Sleep ( 500 ); return ;}                               //Обработка ошибок
          } //4
        } //3
          
                                                                                                                                                                                                                                                                                                                                       // 
       if (OrderType()== 1 &&(Buy==true||Ask<OrderTakeProfit()||Bid>OrderStopLoss()))       //Условия закрытия ордеров Sell  
        { //3
         ticket=OrderTicket();                             //Закрытие ордеров Sell                                                                         
         double Lots=OrderLots();                           //
         OrderClose(ticket,Lots,Ask, 4 );                     //
         
         err= GetLastError ();                               //Обработка ошибок 
         if (err> 0 ){ Alert (err); Sleep ( 500 ); return ;}           //                                                                              
        } //3
                                                           
       if (OrderType()== 0 &&(Sell==true||Bid>OrderTakeProfit()||Ask<OrderStopLoss()))       //Условия закрытие ордеров Buy 
       { //3
         ticket=OrderTicket();                             //Закрытие ордеров Buy                   
         Lots=OrderLots();                                 //  
         OrderClose(ticket,Lots,Bid, 4 );                     //
          
         err= GetLastError ();                               //Обработка ошибок
         if (err> 0 ){ Alert (err); Sleep ( 500 ); return ;}           //
       } //3
      } //2 
                   
   if (Buy==false&&Sell==false) return ;
   int Total= 1 ;
   double Lot= 0.03 ;                 
/*  if(AccountBalance()>400)Lot=0.04;          //
   if(AccountBalance()>500)Lot=0.05;          //
   if(AccountBalance()>600)Total=2;           //
   if(AccountBalance()>800)Lot=0.04;Total=2;  // Блок вычисления лота для реала
   if(AccountBalance()>1000)Lot=0.05;Total=2; //
   if(AccountBalance()>1200)Lot=0.04;Total=3; //
   if(AccountBalance()>1500)Lot=0.05;Total=3; //
   if(AccountBalance()>1600)Lot=0.04;Total=4; //
   if(AccountBalance()>1800)Lot=0.03;Total=6;*/ //
   
   Lot= 0.1 ;
   if (AccountBalance()> 1600 )Lot= 0.2 ;
   if (AccountBalance()> 2400 )Lot= 0.3 ;
                                                                                      
   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 ){ Alert (err); Sleep ( 500 );}                                                   //
       return ;
   } //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 ){ Alert (err); Sleep ( 500 );}                                                   //
   } //2
  
return ;
} //1

돕다.

 
fanat :

친애하는 전문가 여러분! 어드바이저 작성법을 배우고 있습니다. 작동하지만 전부는 아닙니다. 주문 수정 및 마감 블록이 작동하지 않습니다. 이유를 찾을 수 없습니다. 도와주세요.

돕다.


이미 기능에 대해 알아볼 시간이 되었습니까?
 

여기에 문제가 있습니다:

MathSrand( 시간로컬() );

정수 periodRandom=period+ MathRand()/10000;
정수 period2Random=period2+ MathRand()/10000;

Moving1=iMA(Symbol(),0,periodRandom,0,MODE_SMA,price,1) ;

Moving2=iMA(Symbol(),0,period2Random,0,MODE_SMA,가격,1);

나는 틱의 기간을 무작위로 변경하기로 결정했습니다. 기간에 0에서 3까지의 임의의 값을 더했습니다.

그러나 테스터에서 실행은 항상 동일한 양의 이익을 보여줍니다. 아마도 기간이 바뀌지 않았을 것입니다. 내가 코딩을 잘못한 것은 무엇입니까?

 

안녕하세요! 질문은 간단합니다. 상수가 아닌 2차원 배열의 두 번째 차원을 어떻게든 설정할 수 있습니까?

즉, 다음을 수행해야 합니다. double massiv[5][5], 그리고 나는 double massiv[5][k]를 원합니다. 여기서 k는 예를 들어 extern int k = 5를 통해 이전에 지정된 알려진 정수 값입니다. 첫 번째 차원은 ArrayResize 함수 로 변경할 수 있지만 어떤 이유로 두 번째 차원은 변경할 수 없습니다...

 
fru1t :

안녕하세요! 질문은 간단합니다. 상수가 아닌 2차원 배열의 두 번째 차원을 어떻게든 설정할 수 있습니까?

즉, 다음을 수행해야 합니다. double massiv[5][5], 그리고 나는 double massiv[5][k]를 원합니다. 여기서 k는 예를 들어 extern int k = 5를 통해 이전에 지정된 알려진 정수 값입니다. 첫 번째 차원은 ArrayResize 함수로 변경할 수 있지만 어떤 이유로 두 번째 차원을 변경하는 것은 불가능합니다 ...


#define k 5

 

https://docs.mql4.com/en/basis/preprosessor/constant

 

안녕하세요 감정사입니다.

왼쪽 상단의 표시기 하위 창에서 정보를 제거하는 방법을 설명하십시오.

방해합니다.