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

 
void CheckForClose()
  {
   double PriceHigh, PriceLow;
//---- go trading only for first tiks of new bar
   if (Volume[ 0 ]> 1 ) return ;
   
   PriceHigh = iCustom ( Symbol (), 0 , "ExtremeTMALine" , TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1 , 0 ); 
   PriceLow = iCustom ( Symbol (), 0 , "ExtremeTMALine" , TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2 , 0 ); 
   
   
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false )         break ;
       if (OrderMagicNumber()!=Magic || OrderSymbol()!= Symbol ()) continue ;
       //---- check order type 
       if (OrderType()==OP_BUY)
        {
         if (Low[ 1 ]<=PriceHigh && Ask>PriceHigh) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,White);
         break ;
        }
       if (OrderType()==OP_SELL)
        {
         if (Ask<=PriceLow && High[ 1 ]>PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White);
         break ;
        }
     }
//----
  }

아트미디어70

가격 으로 지표 라인 의 교차점에서 포지션을 마감하는 것과 관련하여 내 숫양으로 돌아갑니다. 나는이 기능에 오류가 있다고 생각합니다.

if(볼륨[0]>1) 반환;

나는 교과서에서 눈금을 셀 수 없지만 막대가 나타나는 시간 이후에 거래를 엽니 다 (닫기)를 읽었습니다. 가능합니까? 그렇다면 내 상황과 관련하여 프로그래밍하는 방법에 대한 힌트를 던질 수 있습니다.

 
alexey1979621 :

아트미디어70

지표 라인 가격의 교차점에서 포지션을 청산하는 것과 관련하여 내 숫양으로 돌아갑니다. 나는이 기능에 오류가 있다고 생각합니다.

if(볼륨[0]>1) 반환;

나는 교과서에서 눈금을 셀 수 없지만 막대가 나타나는 시간 후에 거래를 엽니 다 (닫기)라고 읽었습니다. 가능합니까? 그렇다면 내 상황과 관련하여 프로그래밍하는 방법에 대한 힌트를 던질 수 있습니다.

아마도 이것이 유용할 것입니다:

М15에 새 막대가 나타나면 함수가 true를 반환합니다.

 bool CheckOpenM15()
{
   static int PrevTime= 0 ;
   if (PrevTime==iTime( NULL , PERIOD_M15 , 0 )) return ( false );
   PrevTime=iTime( NULL , PERIOD_M15 , 0 );
   return ( true );
}
 
ex1m :

말씀해주세요!!

나는 특정 시간에 두 주문의 시작을 보류로 쓰고 있습니다

{

개장 시간 결정

}

if ((조건)==참)//
{
OrderSend ( OP_BUYSTOPP, 매개변수);// 보류 중인 바이스톱 주문을 엽니다.
OrderSend ( OP_SELLSTOP, 매개변수);// 보류 중인 판매 중지 주문을 엽니다.
}

시간이 제대로 쓰여진 것 같아 판단하지만, 어떤 이유에서인지 Sellstop이나 bystop 중 하나를 열면 한 번에 두 개를 열지 않고 .. 하지만 그렇다면 예를 들어 BYSTOPP를 두 개, 세 개, 4~5권. 그리고 두 가지 다른 유형의 지연기(by-stop 및 Sell-stop)를 동시에, 그리고 한 번에 하나씩 열도록 하려고 합니다. 질문이 원시적인 것 같습니다, 찻주전자를 도와주세요) 감사합니다!)

여기에 올바른 코드를 삽입하려면 먼저 SRC를 클릭한 다음 거기에 코드를 복사하십시오.

특정 시점에서 올바르게 이해했다면 OP_BUYSTOP 하나 와 OP_SELLSTOP 하나 를 열어야 합니까? 현재 다른 보류 중인 주문 이 있을 수 있습니까? 예. 지연기가 있지만 새 것을 열기 전에 이전 것을 삭제해야 합니까?

 
artmedia70 :
이 오류는 주문이 아닌 그래픽 개체에 적용됩니다.

그게 다야! 오류는 개체와 관련이 있지만 이 EA에는 개체가 없습니다...


보릴루나드 :
좋은 저녁이야 빅터! 이상하게도 보류 중인 주문은 개체가 아닙니다! 삭제했어야 했지만 삭제되지 않은 개체 중 일부를 삭제하지 않았을 수 있습니다!

좋은 오후, 보리스! 전문가는 물건을 만들지 않습니다. 그리고 이 오류는 주문 보류 기능에서 발생합니다. 다음은 기능의 버전입니다(테스터용):

 bool OpenPendingBuy(double lot, double price)
{
   int g_ticket = -1;
   double OOP = price + i_distanceFromLastPos * pt;

   if (OOP > Ask)
   {
       fCheck_ValidPendingOOP(Symbol(), OP_BUYSTOP, OOP);
       
       g_ticket = OrderSend(Symbol(), OP_BUYSTOP, lot, ND(OOP), 30, 0, 0, NULL, i_magic, 0, CLR_NONE);
   }
   if (g_ticket > 0)
   {
       return (true);
   }
   else
       pr ("OpenPendingBuy(): Ордер послать не удалось " + GetLastError());
   
   return (false);
}

주문이 이루어지지 않으면 블록이 트리거됩니다.

 else
       pr ( "OpenPendingBuy(): Ордер послать не удалось " + GetLastError ());

그는 실수를 보고합니다.


논리를 이해하는 사람이 있습니까?

 
artmedia70 :

질문에 대한 답이 없기 때문에 마지막으로 주문한 티켓을 반환하는 함수는 다음과 같습니다.



고맙습니다!! 당신이 필요로하는 것

 
hoz :
그게 다야! 오류는 개체와 관련이 있지만 이 EA에는 개체가 없습니다...

좋은 오후, 보리스! 전문가는 물건을 만들지 않습니다. 그리고 이 오류는 보류 중인 주문을 하는 함수에서 발생합니다. 다음은 기능의 버전입니다(테스터용):

주문이 이루어지지 않으면 블록이 트리거됩니다.

그는 실수를 보고합니다.

논리를 이해하는 사람이 있습니까?

그래서, 당신이 당신의 오류 검사에 무엇을 가지고 있는지 확인? 거기에 뭔가 문제가 있는 게 틀림없어!
 
borilunad :
그래서, 당신이 당신의 오류 검사에 무엇을 가지고 있는지 확인? 거기에 뭔가 문제가 있는 게 틀림없어!

Heh)) 그리고 보리스를 실망시키는 것이 무엇입니까? 모든게 투명해...

pr - 인쇄 기능. 그리고 오류는 이미 표준 상수입니다. 논리적으로 이러한 시나리오는 일반적으로 용인되지 않습니다. pr 함수에 대해 여전히 의심이 가는 경우 다음과 같습니다.

 //+-------------------------------------------------------------------------------------+
//| Распринтовка на экран                                                               |
//+-------------------------------------------------------------------------------------+
void pr ( string txt)
{
string info [];
ArrayResize (info, 20 );
string h,m,s,cm; int i;
h=DoubleToStr(Hour(), 0 );     if ( StringLen (h)< 2 ) h= "0" +h;
m=DoubleToStr(Minute(), 0 );   if ( StringLen (m)< 2 ) m= "0" +m;
s=DoubleToStr(Seconds(), 0 ); if ( StringLen (s)< 2 ) s= "0" +s;
txt=h+ ":" +m+ ":" +s+ " - " +txt;
for (i= 20 - 1 ; i>= 1 ; i--)
info[i]=info[i- 1 ];
info[ 0 ]=txt;
for (i= 20 - 1 ; i>= 0 ; i--)
if (info[i]!= "" ){
cm=info[i];
ObjectCreate ( "txtw" +i, OBJ_LABEL , 0 , 0 , 0 );
ObjectSet    ( "txtw" +i, OBJPROP_CORNER , 1 );
ObjectSet    ( "txtw" +i, OBJPROP_XDISTANCE , 10 );
ObjectSet    ( "txtw" +i, OBJPROP_YDISTANCE , 30 + 15 *i);
ObjectSetText( "txtw" +i,cm, 10 , "Times New Roman" , Green);}}
 

  • 논리를 이해하는 사람이 있습니까?


로트 정규화? 음, 가격을 확인하십시오.

i_magic, pt, i_distanceFromLastPos는 전역적입니까?

 
splxgf :

i_magic, pt, i_distanceFromLastPos는 전역적입니까?


네. i_ 가 있는 변수는 입력 변수(단어 입력에서 사용자가 변경할 수 있음 ..)이고 pt전역 변수 로 어디에서나 볼 수 있습니다.
splxgf :


  • 논리를 이해하는 사람이 있습니까?


로트 정규화? 글쎄, 가격을 확인하십시오.


아니요, 로트가 정상화되지 않았습니다. 나는 테스터에서 이것을 만난 적이 없습니다 .. 그리고 많은 것이 객체와 무슨 관련이 있습니까(오류 4200)?
 
hoz :

때때로, 그러나 항상 그런 것은 아닙니다. 보류 주문 설정 기능에서 오류 4200이 발생합니다. 문서에 따르면 이 오류는 개체가 이미 존재함을 의미합니다.

ERR_OBJECT_ALREADY_EXISTS 4200 Объект уже существует

이러한 유형의 주문은 보류 주문이 전송되는 시점에 이미 시장에 나와 있습니까?

조언자가 반응하는 동일한 이름 의 그래픽 개체를 생성하는 다른 프로그램이 있을 수 있습니다. 개체 이름을 변경해야 할 수도 있습니다.