[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 116

 
Roman. :

얘들 아, 왜 Expert Advisor에서 지표를 열 수 없다는 오류가 있는지 알려주십시오.

이 조건이 충족됩니다.

- 매개변수 목록(필요한 경우). 전달된 매개변수는 선언 순서 및 사용자 지정 표시기의 외부(외부) 변수 유형과 일치해야 합니다.


표시기의 이름을 확인해야 합니다. 무엇이든 될 수 있습니다
 
Vinin :

표시기의 이름을 확인해야 합니다. 무엇이든 될 수 있습니다


이름을 확인했습니다. 순서대로. 이해합니다...

추신 나는 다섯 자리 DC의 터미널을 넣고 거기에 모든 것을 전송하고 모든 것을 다시 확인하고 많은 코드 편집이 있었기 때문에 더 이상 그런 오류가 발생하지 않습니다.

 
MQL 프로그래밍 전문가에 대해 초보자가 문제를 처리할 수 있도록 도와주세요. 프로그램이 올바르게 작동하지 않고 필요한 작업을 수행하지 않습니다. 내 실수가 뭔지 말해줘? 프로그램에는 다음이 필요합니다.
1. 주문을 열고 주문 개시 가격 의 값을 PriceBuy 변수에 할당하고 이에 대한 메시지를 발행하면 이에 대처하는 것 같습니다.
2. TakeProfit에 도달하면 동일한 조건으로 새 주문을 엽니다.
다음은 프로그램 코드입니다.

외부 이중 PriceBuy = 0;
extern bool 구매 = true;
외부 부울 번호 = 거짓;

정수 시작()
{
만약(구매)
{
int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-100*Point,Bid+100*Point);
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
PriceBuy=OrderOpenPrice();
Alert("구매 가격 = ",PriceBuy);
구매=거짓;
숫자 = 사실;}

if (Bid+100*Point<=PriceBuy && number)
{가격구매=0;
숫자=거짓;
구매 = 사실;}


반품;
}
미리 감사드립니다
 
OTPOK :

MQL 프로그래밍 전문가에 대해 초보자가 문제를 처리할 수 있도록 도와주세요. 프로그램이 올바르게 작동하지 않고 필요한 작업을 수행하지 않습니다. 내 실수가 뭔지 말해줘? 프로그램에는 다음이 필요합니다.
1. 주문을 열고 주문 개시 가격의 값을 PriceBuy 변수에 할당하고 이에 대한 메시지를 발행하면 이에 대처하는 것 같습니다.
2. TakeProfit에 도달하면 동일한 조건으로 새 주문을 엽니다.
다음은 프로그램 코드입니다.

외부 이중 PriceBuy = 0;
extern bool 구매 = true;
외부 부울 번호 = 거짓;

정수 시작()
{
만약(구매)
{
int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3, Ask -100*Point, Ask +100*Point);
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
PriceBuy=OrderOpenPrice();
Alert("구매 가격 = ",PriceBuy);
구매=거짓;
숫자 = 사실;}

if ( Bid+100*Point<=PriceBuy && number)
{가격구매=0;
숫자=거짓;
구매=참;}


반품;
}
미리 감사드립니다

입찰>=가격구매+100*포인트
 

kernel32 .dll에서 CreateNamedPipe() 함수를 연결하고 싶습니다. Dword 유형의 플래그를 등록해야 합니다.

나는 이것을 이렇게 한다:

#define ACCESS_SYSTEM_SECURITY 0x01000000L

당연히 컴파일러는 끝에 문자 L로 맹세합니다. 어떻게 될 지 말해줘?

 
Vinin :

표시기의 이름을 확인해야 합니다. 무엇이든 될 수 있습니다


네, 정말 빅터, 실수는 제가 기계를 사용한 것이었습니다... :-)))

...
string short_name;
...
short_name= "NonLagMA" ;
IndicatorShortName (short_name);
...

... 그 결과 iCustom()을 통해 표시기 값에 액세스할 때 "짧은" 이름과 "일반" 이름 사이에 불일치가 있었습니다. 즉, 일치하지 않는 경우 표시기는 "정상" 이름으로만 참조해야 합니다.

고맙습니다.

 

안녕하세요.

오류를 찾을 수 있도록 도와주세요.

이 코드는 가격이 차트에 그려진 선을 넘을 때 모든 위치를 닫도록 설계되었습니다. 대부분의 경우 이런 일이 발생합니다. 그러나 주기적으로 2가지 결함이 있습니다. 1. 가격이 선을 넘었지만 포지션이 마감되지 않았습니다. 2. 라인 은 현재 가격 수준을 (비스듬히) 교차하지만 시간상 일치하지 않으며(현재 캔들에 닿지 않음) 모든 위치는 닫혀 있어야 합니다(그렇지 않아야 함).

 int start() {
//============== Закрытие по линии Close ========================================
   int bar1,bar2,bar3;
   if (Draw_Close && ObjectFind ( "LINES CLOSE" )==- 1 )
   {
      bar3 = searcFR( 0 , 1 );bar2 = searcFR(bar3,- 1 );bar1 = searcFR(bar2, 1 );
      drawline( "LINES CLOSE" ,Color_Close,Time[bar1],High[bar1]+ 15 * Point ,Time[bar3],High[bar3]+ 15 * Point );
   }
   string order = checkapp();
   if (order== "LINES CLOSE" )
   {DeleteAllOtlozh_b();
    CloseAll_b(DeleteOtlozh,Proskalz);
     ObjectDelete ( "LINES CLOSE" );
     ObjectDelete ( "LINES CLOSE n" );
    Draw_Close  = false;
     if (UseAlert){
     Alert ( "Уровень достигнут, заблокирован" );
    } 
   } 
}     
//==================================================================================


//=========== Вычисление линии Close  =================================================================
int searcFR( int bar, int UP_DN)
{   while (true) //ищем 1 фрактал после bar
   {  bar++;
       if (Fractal(bar) == UP_DN) return (bar);} 
   return ( 0 );  
}
//--------------------------------------------------------------------------
int Fractal( int br)
{   if (br <= 2 ) return ( 0 );
   if (High[br] >= High[br+ 1 ] && High[br] > High[br+ 2 ] && High[br] >= High[br- 1 ] && High[br] > High[br- 2 ]) return ( 1 );
   if (Low [br] <= Low [br+ 1 ] && Low [br] < Low [br+ 2 ] && Low [br] <= Low [br- 1 ] && Low [br] < Low [br- 2 ]) return (- 1 );
   return ( 0 );
}
//-------------------------------------------------------------------
int drawline( string Name, color col, int X1, double Y1, int X2, double Y2)
{
   if ( ObjectFind (Name)== 0 ) return ; //Если обьект существует
   int X1g=Time[ 0 ];
   int X2g=Time[ 0 ]+ Period ()* 1200 ;
   double Y1g=Y1+(Y2-Y1)*(X1g-X1)/(X2-X1);
   double Y2g=Y1+(Y2-Y1)*(X2g-X1)/(X2-X1);
   ObjectCreate (Name, OBJ_TREND , 0 ,X1g,Y1g,X2g,Y2g);
   ObjectSet    (Name, OBJPROP_COLOR , col);
   ObjectSet    (Name, OBJPROP_STYLE , STYLE_SOLID );
   ObjectSet    (Name, OBJPROP_WIDTH , 2 );
   ObjectSet    (Name, OBJPROP_BACK ,  false);
   ObjectSet    (Name, OBJPROP_RAY,   false);
   return ;
}
//----------------------------------------------------------------------- проверка всех линий
string checkapp()
{
   int X_1,X_2,X_3;
   double Y_1,Y_2,Y_3;
   double shift_Y = ( WindowPriceMax ()- WindowPriceMin ()) / 50 ;
   color col;
   for ( int n= ObjectsTotal ()- 1 ; n>= 0 ; n--) 
   {
       string Obj_N= ObjectName (n);
       if ( ObjectType (Obj_N)!= OBJ_TREND ) continue ;
       if ( StringFind (Obj_N, "LINES " , 0 )!=- 1 ) //найден обьект-тренд к которому вычисляется приближение
      {
         X_1 = ObjectGet (Obj_N, OBJPROP_TIME1); 
         X_2 = ObjectGet (Obj_N, OBJPROP_TIME2); 
         ObjectDelete (Obj_N+ " n" );
         if (X_1>X_2 ||  X_2<Time[ 0 ]) { continue ;} //ObjectDelete(Obj_N);
         Y_1 = ObjectGet (Obj_N, OBJPROP_PRICE1);
         Y_2 = ObjectGet (Obj_N, OBJPROP_PRICE2);
         col= ObjectGet (Obj_N, OBJPROP_COLOR );
         ObjectCreate (Obj_N+ " n" , OBJ_TEXT , 0 ,X_1- Period ()* 60 ,Y_1+shift_Y, 0 , 0 , 0 , 0 );
         ObjectSetText (Obj_N+ " n" , StringSubstr (Obj_N, 6 , 5 ) , 7 , "Arial" );
         ObjectSet     (Obj_N+ " n" , OBJPROP_COLOR , col);
         if (X_1<=Time[ 0 ] && X_2>=Time[ 0 ]) //попадает во временной диапазон
         {
            X_3=Time[ 0 ];Y_3=Y_1+(Y_2-Y_1)*(X_3-X_1)/(X_2-X_1); //уравнение прямой
             if (Y_3>=Bid&&Y_3<=Ask)
            { 
               return (Obj_N);
            }
         }
      }
   }
}

미리 감사드립니다.

 
nemo811 :

오류를 찾을 수 있도록 도와주세요.

나는 질문을 제거하고, 나는 그것을 알아 냈다.

 
toropchin :

kernel32.dll에서 CreateNamedPipe() 함수를 연결하고 싶습니다. Dword 유형의 플래그를 등록해야 합니다.

나는 이것을 이렇게 한다:

 #define ACCESS_SYSTEM_SECURITY 0x01000000L

당연히 컴파일러는 끝에 문자 L로 맹세합니다. 어떻게 될 지 말해줘?

쥰코 :

순위를 제거합니다. 8자리만 가능합니다. MQL4는 대형에서 작동하지 않습니다.

0을 제거해야 합니다. 다음과 같이 시도하십시오: 0x1000000L


그런 식으로 작동하지 않습니다. 컴파일러에서 오류 '0x1000000L' 제공 - 잘못된 번호
 
toropchin :

그런 식으로 작동하지 않습니다. 컴파일러에서 오류 '0x1000000L' 제공 - 잘못된 번호

밤에는 전혀 생각이 안 나네요... :-)) 16진법에는 그런 숫자가 없습니다. 이것은 상수의 유형 식별자입니다.

L을 제거해야 합니다: 0x01000000