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

 
Link_x :
안녕하세요!
"김" 함수에 마지막 오픈 주문의 이익 금액을 계산하는 그런 기능이 있습니까?

나는 그것을 찾지 못했고 지금은 마지막 열린 주문의 이익 금액을 계산하는 자체 제작 기능에 대해 "머리를 깨고 있습니다".


주문 이익()

정확히 마지막 오픈 주문이 필요한 경우 모든 주문을 반복하고 오픈 시간 이 가장 늦은 주문을 선택한 다음 위의 기능을 사용하면 이 주문의 순이익이 반환됩니다.

 
Ekburg :


주문 이익()

정확히 마지막으로 열린 주문이 필요한 경우 모든 주문을 반복하고 시작 시간이 가장 늦은 주문을 선택한 다음 위의 기능을 사용하면 이 주문의 순이익이 반환됩니다.


그들이 제 시간에 나에게 답을 주듯이, 내가 해결책을 찾는 바로 그 순간에. :)
Pips_Proffit_Last_Pos = p - PriceOpenLastPos;
하지만 어쨌든 감사합니다!
 

Ekburg К сожалению времени и возможности написать Вам готовый код нет, так как я на работе нахожусь))

기록이 아니라 현재 위치를 기준으로 코드 작성을 시도할 수 있는 논리적 체인이 있습니다.

[이사 및 주문 블록]

1 주문한 티켓과 매직넘버를 기억하세요.

2 주문 수를 모니터링하고 시장에 주문이 없으면(이는 주문이 마감되었음을 의미) 포인트 3 으로 이동하거나 마감 시간이 0보다 커질 때까지 이 특정 주문을 따르십시오. 이 경우 포인트 3 을 제외합니다. 그리고 4

3 우리 주문 찾기

4 닫혀 있는지 확인

5 그것이 어떻게 닫혔는지 알아보십시오.

6 중지로 닫혀 있으면 방향이 다른 다른 주문을합니다.


 //+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link        "http://www.metaquotes.net"


extern double Lots = 0.1 ;
extern double TakeProfit = 100 ;
extern double StopLoss = 100 ;       
extern double TrailingStop = 50 ;
extern double Margincutoff = 100 ;   
extern double MagicNumber = 12345 ;
extern double TradeSizePercent = 5 ;
extern int Slippage = 10 ;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
  
   int Crossed ( double line1, double line2)
  {
   static int last_direction= 0 ;
   static int current_direction= 0 ;
  
   if (line1>line2)current_direction= 1 ; // пересечение вверх
   if (line1<line2)current_direction= 2 ; // пересечение вниз
  
   if (current_direction!=last_direction) //изменения произошли
  {
  last_direction=current_direction;
   return (last_direction);
  }
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
     int cnt, ticket, total, totalhistory, memoryticket;
     double shortEMA, longEMA;
    
     if ( Bars < 100 ) 
     {
     Print ( "Bars less than 100" );
     return ( 0 );
     }
     shortEMA= iMA ( NULL , 0 , 8 , 0 , MODE_EMA , PRICE_CLOSE , 0 );
     longEMA= iMA ( NULL , 0 , 13 , 0 , MODE_EMA , PRICE_CLOSE , 0 );
     int isCrossed=Crossed(shortEMA, longEMA);
//----
   total= OrdersTotal ();
   if (total< 1 ) 
     {
       // нет открытых ордеров
       if ( AccountFreeMargin ()<( 1000 *Lots))
        {
         Print ( "We have no money. Free Margin = " , AccountFreeMargin ());
         return ( 0 );  
        }
       // проверяем пересечение МА для открытия позиции на покупку
       if (isCrossed== 1 )
        {
         ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask ,Slippage, Ask -StopLoss* Point , Ask +TakeProfit* Point , "МА" , 12345 , 0 ,Green);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES )) 
            memoryticket= OrderTicket (); // запомнили тикет
             Print ( "BUY order opened : " , OrderOpenPrice ());
           }
         else Print ( "Error opening BUY order : " ,GetLastError()); 
         return ( 0 ); 
        }
         //проверяем пересечение МА для открытия позиции на продажу
         if (isCrossed== 2 )
        {
         ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid ,Slippage, Bid +StopLoss* Point , Bid -TakeProfit* Point , "MA" , 12345 , 0 ,Red);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES )) 
            memoryticket= OrderTicket (); // запомнили тикет
             Print ( "SELL order opened : " , OrderOpenPrice ());
           }
         else Print ( "Error opening SELL order : " ,GetLastError()); 
         return ( 0 ); 
        }
         return ( 0 ); 
        }  
//----начинаем искать закрытые ордера

         //инициализация параметров
  
   int old_order_type;
 
   
   RefreshRates ();
  
   //нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер 
   for ( totalhistory = OrdersHistoryTotal () - 1 ; totalhistory >= 0 ; totalhistory-- ) 
  {
     if ( OrderSelect (totalhistory, SELECT_BY_TICKET , MODE_HISTORY ) && OrderTicket () == memoryticket && OrderMagicNumber () == MagicNumber && OrderSymbol () == Symbol () )
     {
         old_order_type = OrderType ();
         if ( OrderProfit ()< 0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         {
                 break ; //прекращаем поиск
         }
     }
  }
   //если раньше покупали, то теперь продаем
   if ( old_order_type == OP_BUY )
  {
  ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid ,Slippage, Bid +StopLoss* Point , Bid -TakeProfit* Point , "MA" , 12345 , 0 ,Red);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES )) 
            memoryticket= OrderTicket (); // запомнили тикет
             Print ( "SELL order opened : " , OrderOpenPrice ());
           }
         else Print ( "Error opening SELL order : " ,GetLastError()); 
         return ( 0 ); 
        }
 //если раньше продавали, то теперь покупаем
   if ( old_order_type == OP_SELL )
  {
         ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask ,Slippage, Ask -StopLoss* Point , Ask +TakeProfit* Point , "МА" , 12345 , 0 ,Green);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES )) 
            memoryticket= OrderTicket (); // запомнили тикет
             Print ( "BUY order opened : " , OrderOpenPrice ());
           }
         else Print ( "Error opening BUY order : " ,GetLastError()); 
         return ( 0 ); 
        }
   return ( 0 );
  }
//+------------------------------------------------------------------+
여기 내가 얻는 것이 있습니다. 진실 3로트를 엽니다. 일반적으로 망했습니다. 코드를 수정할 수 있습니까? 뭐가 문제 야?
 
나는 이미 그런 질문을 하는 것에 지쳤습니다(신경계에 엄청나게 짜증이 납니다, pi ****, 죄송합니다(내가 찾을 수 없는 빌어먹을 변수(대부분 짜증나는 것, 내가 나 자신을 찾을 수 없는 것))).

현재 가격 가치를 담당하는 변수는 무엇입니까?
나는 Bid, Ask, POINT_HIGH , POINT_LOW를 제외하고는 문서를 넘겼습니다. 아무것도 없습니다.
그런 변수가 실제로 존재합니까?
 
Link_x :
나는 이미 그런 질문을 하는 것에 지쳤습니다(신경계에 엄청나게 짜증이 납니다, pi ****, 죄송합니다(내가 찾을 수 없는 빌어먹을 변수(대부분 짜증나는 것, 내가 나 자신을 찾을 수 없는 것))).

현재 가격 가치를 담당하는 변수는 무엇입니까?
나는 Bid, Ask, POINT_HIGH, POINT_LOW를 제외하고는 문서를 넘겼습니다. 아무것도 없습니다.
그런 변수가 실제로 존재합니까?
"시장 감시" 창에서 가격이 어떻게 변하는지 눈치채셨나요? 여기에서 Bid 및 Ask를 관찰할 수 있습니다. 이는 현재 가격 입니다. 첫 번째는 판매용이고 두 번째는 구매용입니다.
 
Link_x :

그들이 제 시간에 나에게 답을 주듯이, 내가 해결책을 찾는 바로 그 순간에. :)
해결책은 스스로 제안합니다. "질문을 서두르지 마십시오." 그리고 항상 유능한 답변을 얻지는 못한다는 점을 감안할 때 ... :)))
 
khorosh :
"시장 감시" 창에서 가격이 어떻게 변하는지 눈치채셨나요? 여기에서 Bid 및 Ask를 관찰할 수 있습니다. 이는 현재 가격입니다. 첫 번째는 판매용이고 두 번째는 구매용입니다.

토치냑!!!
이 작은 것을 잊었다!!!
 
TarasBY :
해결책은 스스로 제안합니다. "질문을 서두르지 마십시오." 그리고 항상 유능한 답변을 얻지 못한다고 생각한다면 ... :)))
예 예. :)
 
Link_x :
토치냑!!!
이 작은 것을 잊었다!!!

당신은 시험에서 실제 학생처럼 올바르게 대답합니다. - 당신은 내가 모른다고 말할 수 없습니다.
 
Link_x :
예 예. :)

자신의 질문보다 다른 사람의 질문에 답을 시도해 봐야 할 수도 있습니다. 혜택은 훨씬 더 크며(어느 정도까지는) 물론 자신을 위한 혜택도