[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 116

 
Roman. :

Beyler Expert Advisor'da göstergeyi açmanın imkansızlığı konusunda neden bir hata olabilir söyler misiniz?

Bu koşul karşılanır:

-Parametre listesi (gerekirse). Geçirilen parametreler, bildirim sırasına ve özel göstergenin harici (harici) değişkenlerinin türüne uygun olmalıdır.


Göstergenin adını doğrulamak gerekli olacaktır. her şey olabilir
 
Vinin :

Göstergenin adını doğrulamak gerekli olacaktır. her şey olabilir


Adı kontrol ettim. Sırayla. Anladım...

not Beş basamaklı bir DC'nin terminalini koydum, her şeyi oraya aktardım, her şeyi tekrar kontrol ettim, çok sayıda kod düzenlemesi vardı, artık böyle bir hata oluşmuyor.

 
MQL programlama guruları hakkında, bir aceminin problemle başa çıkmasına yardım edin. Program düzgün çalışmıyor, gerekli işlemleri yapmıyor. Söyle bana, benim hatam ne? Programın ihtiyacı:
1. Bir emir açın ve emir açılış fiyatının değerini PriceBuy değişkenine atayın ve bununla ilgili bir mesaj yayınlayın, bununla başa çıkacak gibi görünüyor.
2. TakeProfit'e ulaştıktan sonra aynı koşullarla yeni bir sipariş açın.
İşte programın kodu:

harici çift FiyatAl = 0;
extern bool Buy = true;
harici bool numarası = yanlış;

int başlangıç()
{
eğer(satın al)
{
int bilet=SiparişGönder(Symbol(),OP_BUY,0.01,Ask,3,Bid-100*Puan,Teklif+100*Puan);
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
PriceBuy=SiparişOpenPrice();
Alert("Fiyat Al = ",FiyatBuy);
satın=yanlış;
sayı = doğru;}

if (Teklif+100*Puan<=FiyatAlım && sayı)
{fiyat satın alma=0;
sayı=yanlış;
satın=doğru;}


dönüş;
}
Şimdiden teşekkürler
 
OTPOK :

MQL programlama guruları hakkında, bir aceminin problemle başa çıkmasına yardım edin. Program düzgün çalışmıyor, gerekli işlemleri yapmıyor. Söyle bana, benim hatam ne? Programın ihtiyacı:
1. Bir emir açın ve emir açılış fiyatının değerini PriceBuy değişkenine atayın ve bununla ilgili bir mesaj yayınlayın, bununla başa çıkacak gibi görünüyor.
2. TakeProfit'e ulaştıktan sonra aynı koşullarla yeni bir sipariş açın.
İşte programın kodu:

harici çift FiyatAl = 0;
extern bool Buy = true;
harici bool numarası = yanlış;

int başlangıç()
{
eğer(satın al)
{
int bilet=SiparişGönder(Symbol(),OP_BUY,0.01,Ask,3, Ask -100*Puan, Ask +100*Puan);
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
FiyatBuy=SiparişOpenPrice();
Alert("Fiyat Al = ",FiyatBuy);
satın=yanlış;
sayı = doğru;}

if ( Teklif+100*Puan<=FiyatAlım && sayı)
{fiyat satın alma=0;
sayı=yanlış;
satın=doğru;}


dönüş;
}
Şimdiden teşekkürler

Teklif>=FiyatAl+100*Puan
 

Kernel32 .dll'den CreateNamedPipe() işlevini bağlamak istiyorum. Dword tipi bayrakları kaydetmek gereklidir.

Ben şöyle yapıyorum:

#define ACCESS_SYSTEM_SECURITY 0x01000000L

Doğal olarak, derleyici sonunda L harfine yemin eder. Bana nasıl olacağımı söyle?

 
Vinin :

Göstergenin adını doğrulamak gerekli olacaktır. her şey olabilir


Evet, gerçekten Victor, hata makineyi kullanmamdı... :-))) aracılığıyla göstergeye

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

... bunun sonucunda gösterge değerlerine iCustom() aracılığıyla erişirken "kısa" ad ile "normal" ad arasında bir uyumsuzluk vardı, yani. eşleşmezlerse, göstergeye yalnızca "normal" adıyla atıfta bulunulmalıdır.

Teşekkür ederim.

 

Merhaba.

Lütfen hatayı bulmama yardım edin.

Kod, fiyat grafikte çizilen çizgiyi geçtiğinde tüm pozisyonları kapatmak için tasarlanmıştır. Çoğu durumda, olan budur. Ancak periyodik olarak 2 aksaklık vardır: 1. Fiyat çizgiyi aşıyor, ancak pozisyonlar kapatılmıyor. 2. Çizgi , mevcut fiyat seviyesini (açılı) geçer, ancak zamanla çakışmaz (mevcut muma dokunmaz), tüm pozisyonlar kapalıyken (olmaması gerekir).

 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);
            }
         }
      }
   }
}

Şimdiden teşekkür ederim.

 
nemo811 :

Lütfen hatayı bulmama yardım edin.

Soruyu kaldırdım, anladım.

 
toropchin :

Kernel32.dll'den CreateNamedPipe() işlevini bağlamak istiyorum. Dword tipi bayrakları kaydetmek gereklidir.

Bunu şöyle yapıyorum:

 #define ACCESS_SYSTEM_SECURITY 0x01000000L

Doğal olarak, derleyici sonunda L harfine yemin eder. Bana nasıl olacağımı söyle?

Zhunko :

Dereceyi kaldır. Sadece 8 rakam olabilir. MQL4 büyük ile çalışmaz.

Sıfır çıkarılmalıdır. Şu şekilde deneyin: 0x1000000L


Böyle çalışmıyor. Derleyici '0x1000000L' hatası veriyor - geçersiz sayı
 
toropchin :

Böyle çalışmıyor. Derleyici '0x1000000L' hatası veriyor - geçersiz sayı

Gece hiç düşünemiyorum... :-)) Onaltılık sistemde böyle bir rakam yok. Bu, sabitin tür tanımlayıcısıdır.

L kaldırılmalıdır: 0x01000000