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

 
Svinozavr >> :

예, 모든 것이 더 간단해 보입니다. 거래 시간이 알려져 있습니다. 그렇다면 시간 프레임은 다음과 같습니다.


Time[iBarShift( NULL ,tf,DealTime)]

어디
tf - 원하는 시간 프레임,
DealTime - 거래 시간(날짜 포함)


감사합니다. 하지만 아직 거래가 없고 DealTime이 계획된 거래의 알려진 시간이라면 어떻게 하시겠습니까?

 
MoneyJinn >> :


감사합니다. 하지만 아직 거래가 없고 DealTime이 계획된 거래의 알려진 시간이라면 어떻게 하시겠습니까?

왜 그래?))) 알았어. 예, 더 간단합니다. tf*60*MathFloor(DealTime/60/tf) // 변수의 의미는 동일합니다.

스크립트를 확인할 수 있습니다.

 #property show_inputs
extern int tf= 1440 ;
extern datetime DealTime;

void start() { Alert (TimeToStr(tf* 60 * MathFloor (DealTime/ 60 /tf)));}
===
수정했습니다. 초를 분으로 변환하는 것을 잊었습니다.)))
 
내 고문에 약 200 MA가 있습니다. 테스트할 때 " 차트 열기 "를 클릭하면 모두 그려집니다.
안보이게 없애는 방법 없을까요?
고맙습니다
 
snowman647 >> :
у меня в советнике около 200 MA, при тестировани, когда жмешь "открыть график" они все рисуються.
можно их както убрать, чтоб не видно было?
спасибо

void HideTestIndicators( 부울 숨기기)
이 함수는 EA에서 호출한 표시기를 숨기기 위한 플래그를 설정합니다. 테스트 후 차트를 열 때 숨김 플래그가 표시된 지표는 테스트 차트에 표시되지 않습니다. 각 호출 전에 표시기는 현재 설정된 숨기기 플래그로 표시됩니다.
테스트된 Expert Advisor에서 직접 호출된 지표만 테스트 차트에 표시될 수 있다는 점에 유의해야 합니다.

 
MQL 언어를 연습으로 마스터하려고 하는데 Flip EA에 Martingale 기능을 추가하기로 했어요!
따라서 SL에서는 랏에 계수를 곱한 주문을 열고 TP에서는 초기 로트에서 시작합니다!
그런데 주문할 때마다 로트가 늘어나는데 TP, SL은 어떻게 조건을 달아야 할지 모르겠어요!
올바른 코드가 어떻게 생겼는지 알려주세요!
 //--------------------------------------------------------------------
extern int  stoploss    = 50 ,
            takeprofit  = 50 ;
extern double  mult= 2 ;
extern double      Lot= 1 ;
int         tip;
//--------------------------------------------------------------------
int init()
{
   OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 , NormalizeDouble (Ask + stoploss* Point , Digits ),
                        NormalizeDouble (Bid - takeprofit* Point , Digits ), " " , 777 , Blue );
}
//--------------------------------------------------------------------
int start()
{
   for ( int i= 0 ; i< OrdersTotal (); i++){   
      if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==true){
         if (OrderSymbol()== Symbol ()){
            tip = OrderType();
            Lot = OrderLots(); return ;}}}
   if (Lot== 0 ) return ;
   if (tip== 0 ) OrderSend ( Symbol (),OP_SELL,Lot*mult,Bid, 3 , NormalizeDouble (Ask + stoploss* Point , Digits ),
                                    NormalizeDouble (Bid - takeprofit* Point , Digits ), " " , 777 , Blue );
   if (tip== 1 ) OrderSend ( Symbol (),OP_BUY ,Lot*mult,Ask, 3 , NormalizeDouble (Bid - stoploss* Point , Digits ),
                                    NormalizeDouble (Ask + takeprofit* Point , Digits ), " " , 777 , Blue );
   return ( 0 );
}
//-----------------------------------------------------------------
 
Kogalym >> :
Пытаюсь освоить язык MQL в качестве практики решил добавить в советник перевертыш функцию Мартингейла!
Что бы при SL открывал ордер лотом умноженным на коэффициент, а при TP начинал с первоночального лота!
Но получилось что лот увеличивается с каждым ордером, не знаю как поставить условие на TP и SL!
Подскажите пожалуйста как должен выглядеть правильный код!

이런 기능이 있어야 합니다

 double getLot()
{
   if (OrdersHistoryTotal()== 0 ) return ( 0.1 );
   // ищем самый последний закрытый ордер
   datetime time= 0 ;
   int ticket=- 1 ;
   for (i=OrdersHistoryTotal()- 1 ;i>= 0 ;i--)
   {
      if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY))
      {
         if (OrderSymbol()== Symbol ())
         {
            if (OrderCloseTime()>time)
            {
               time=OrderCloseTime();
               ticket=OrderTicket();
            }
         }
      }
   }
   if (OrderTicket()!=ticket) OrderSelect (ticket,SELECT_BY_TICKET);
   if (OrderProfit()<= 0 ) return ( NormalizeDouble (OrderLots()*Martin_Koef, 2 ));
   if (OrderProfit()> 0 ) return ( 0.1 );
   //-----
}
 
Roger >> :

예, 그들은 이미 이 질문으로 대머리를 먹었습니다. 검색 엔진에 여기에 오래된 틱을 입력하고 읽고, 읽고, 읽으십시오.

당신이 그렇게 똑똑하다면 왜 여기에 있습니까? 글을 쓰는데 험난한 시간을 보내는 것은 안타까운 일이 아니라 zapadlo에 답하는 것을 의미합니다. 오 글쎄.

 
StatBars >> :

이런 기능이 있어야 합니다


시간이 어딘지 모르겠어?
제 생각에는 마지막 3줄만 분실시 로트증가에 책임이 있습니다
 if (OrderTicket()!=ticket) OrderSelect (ticket,SELECT_BY_TICKET);
   if (OrderProfit()<= 0 ) return ( NormalizeDouble (OrderLots()*Martin_Koef, 2 ));
   if (OrderProfit()> 0 ) return ( 0.1 );
 
Kogalym >> :


시간이 어딘지 모르겠어?
제 생각에는 마지막 3줄만 분실시 로트증가에 책임이 있습니다

함수가 마지막으로 마감된 주문을 찾는 동안 이익을 기반으로 로트가 계산됩니다. 폐쇄형 손절매 주문이 이익에서 결코 양수일 수 없고 이익 실현으로 마감된 주문이 이익에서 결코 음수일 수 없다면 기능이 올바르게 작동할 것입니다.
트롤이 있는 경우 기능을 다시 실행해야 합니다.

 
StatBars >> :

함수가 마지막으로 마감된 주문을 찾는 동안 이익을 기반으로 로트가 계산됩니다. 폐쇄형 손절매 주문이 이익에서 결코 양수일 수 없고 이익 실현으로 마감된 주문이 이익에서 결코 음수일 수 없다면 기능이 올바르게 작동할 것입니다.
트롤이 있는 경우 기능을 다시 실행해야 합니다.

TP로 같은 방향으로 주문을 열고 SL로 반대 방향으로 주문을 여는 어드바이저를 작성했는데 Martingale 함수를 삽입하고 처음으로 돌아갈 수 없습니다

 //--------------------------------------------------------------------
extern int  stoploss    = 50 ,
            takeprofit  = 50 ;
extern double  mult= 2 ;
extern double      Lot= 1 ;
//--------------------------------------------------------------------
int init()
{
   OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 , NormalizeDouble (Ask + stoploss* Point , Digits ),
                        NormalizeDouble (Bid - takeprofit* Point , Digits ), " " , 777 , Blue );
}
//--------------------------------------------------------------------
int start()
{   for ( int i= 0 ; i< OrdersTotal (); i++){   
      if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==true){
         if (OrderSymbol()== Symbol ()){
         Lot = OrderLots(); return ;}}}
            if (Lot== 0 ) return ;
        
  if (OrderType() == OP_SELL)
     if (OrderProfit()> 0 ) OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 , NormalizeDouble (Ask + stoploss* Point , Digits ),
                                    NormalizeDouble (Bid - takeprofit* Point , Digits ), " " , 777 , Blue );
   else OrderSend ( Symbol (),OP_BUY ,Lot,Ask, 3 , NormalizeDouble (Bid - stoploss* Point , Digits ),
                                    NormalizeDouble (Ask + takeprofit* Point , Digits ), " " , 777 , Blue );
                                                                        
    if (OrderType() == OP_BUY) 
    if (OrderProfit()> 0 ) OrderSend ( Symbol (),OP_BUY ,Lot,Ask, 3 , NormalizeDouble (Bid - stoploss* Point , Digits ),
                                    NormalizeDouble (Ask + takeprofit* Point , Digits ), " " , 777 , Blue );
    else OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 , NormalizeDouble (Ask + stoploss* Point , Digits ),
                                    NormalizeDouble (Bid - takeprofit* Point , Digits ), " " , 777 , Blue );
                                     
       
   return ( 0 );
}
//-----------------------------------------------------------------

스타터 로트! 이 함수를 삽입해야 하는 위치를 표시할 수 있습니까?