MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 252

 

> err=StringToInteger((string)err)

bu tarihe geçmeli ;-)

başlangıçta err'de, açıkçası GetLastError()'dan bir int aldınız. Hata kodunu okunabilir açıklamaya dönüştürün ErrorDescription(err); #include <stdlib.mqh> etkinleştirilmişse.

ama yazıldığı gibi - bu teneke

PS/ ve MQL programlamayı öğrenmeyin. MQL o 4, o 5 hala belirli bir platform için hedef diller.

 

lütfen bana bu şekilde yazmanın mümkün olup olmadığını söyleyin. anlaşmalar açmak istemiyor. belki hesaplanan sayıların biçimi yanlıştır? Veya koddaki diğer hatalar?


çift TakeLong (çift shp)

{

int CurrentDayRange=0, FiveDayATR=0, take=0;

çift TP_ATR=0;

//////Pivot girişleri

çift P, S1, R1, S2, R2, S3, R3;

çift LastHigh, LastLow, x;

int counted_bars = IndicatorCounted();

int limit, i;

shp=iYüksek(Symbol(), PERIOD_D1 ,0);


//---- Pivot gösterge hesaplaması

if(sayılan_barlar == 0)

{

x = Dönem();

eğer(x > 240)

dönüş(-1);

}

if(sayılan_barlar < 0)

dönüş(-1);

limit = (Barlar - sayılan_barlar) - 1;

//----

for(i = limit; i >= 0; i--)

{

if(Yüksek[i+1] > SonYüksek)

SonYüksek = Yüksek[i+1];

//----

if(Düşük[i+1] < LastLow)

LastLow=Düşük[i+1];

if(TimeDay(Time[i]) != TimeDay(Zaman[i+1]))

{

P = (SonYüksek + SonDüşük + Kapat[i+1]) / 3;

R1 = (2*P) - SonDüşük;

S1 = (2*P) - SonYüksek;

R2 = P + (SonYüksek - SonDüşük);

S2 = P - (SonYüksek - SonDüşük);

R3 = (2*P) + (SonYüksek - (2*SonDüşük));

S3 = (2*P) - ((2* SonYüksek) - SonDüşük);

LastLow = Open[i];

LastHigh = Açık[i];

}

}

////ATR hesaplaması

(i=1;i<6;i++) için

{ if(iHigh(NULL, PERIOD_D1, i)- iLow(NULL, PERIOD_D1, i)>0) FiveDayATR += (iHigh(NULL, PERIOD_D1, i)-iLow(NULL, PERIOD_D1, i));}

FiveDayATR = NormalizeDouble(FiveDayATR/5,Digits());

CurrentDayRange = (iHigh(NULL, PERIOD_D1, i)-iLow(NULL, PERIOD_D1, i));

if(FiveDayATR-CurrentDayRange>0) TP_ATR=Ask+FiveDayATR-CurrentDayRange; başka TP_ATR=0;


if (Teklif>R1 && TP_ATR==0) take=shp;

yoksa (Teklif<R1 && R1<TP_ATR) almak=R1;

başka al=TP_ATR;

dönüş(al);

}

 
forexpipsrunner : lütfen bana bu şekilde yazmanın mümkün olup olmadığını söyleyin. anlaşmaları açmak istemiyor

Önerilen kod bir göstergeye benzer. Ve anlaşmalar bir danışman ya da bir senaryo tarafından açılır. Göstergedeki OrderSend işlevinin çağrılması yasaktır. Gösterge bip sesi çıkarabilir - Uyarı işlevine bir çağrı veya uygun yere bir ses ekleyin

 
STARIJ :

Önerilen kod bir göstergeye benzer. Ve anlaşmalar bir danışman ya da bir senaryo tarafından açılır. Göstergedeki OrderSend işlevinin çağrılması yasaktır. Gösterge bip sesi çıkarabilir - Uyarı işlevine bir çağrı veya uygun yere bir ses ekleyin


bu, OrderSend'de sonucu döndüren TP tanım kodudur. bu karmaşık algoritma olmadan işlemler gönderilir, onunla hiçbir yolu yoktur. TP = TakeLong(SHP); işlevini çağırıyorum.

 
forexpipsrunner : Bu, OrderSend'de sonucu döndüren TP tanım kodudur. bu algoritma olmadan işlemler gönderilir, onunla hiçbir şey olmaz

Hata ayıklamanın birçok yolu vardır - orada bulunduğu tespit edildiğinde bir hatayı bulma süreci. Birincisi F5 - MetsEditor'da hata ayıklamaya başlayın. 2) uygulamayı izlemek için Uyarıları kullanma. 3 ve 4) hata ayıklama bilgilerinin metin etiketlerine ve Yorum işlevine çıktısı. Sizin için uygun bir yol seçin ve bu basit işlevin hatalarını ayıklayın - o zaman bir programcı olacaksınız. Binlerce satırdan oluşan bir program karmaşık olarak kabul edilir.

 
forexpipsrunner :

lütfen bana böyle yazmanın mümkün olup olmadığını söyle. anlaşmalar açmak istemiyor. belki hesaplanan sayıların biçimi yanlıştır? Veya koddaki diğer hatalar?


int take=0 - bir tamsayı döndürürsünüz, bu değişkenin double olması gerekmez mi?
 
Merhaba! Bir "ray" kalıbı yapmak istiyorum ama mum gövdesinin boyutunu hesaplayamıyorum....

Mumların gövdesinin boyutunu aşağıdaki gibi hesaplarım:
MathAbs( Close1[i] - Open1[i] ) / Nokta + 1
MathAbs( Close2[i] - Open2[i] ) / Nokta + 1

Tam kodda şöyle görünür:

double Close1 = iClose (Symbol(), 0, i);
double Open1 = iOpen(Symbol(), 0, i);
double Close2 = iClose(Symbol(), 0, i+1);
double Open2 = iOpen(Symbol(), 0, i+1);

MathAbs( Close1[i] - Open1[i] ) / Nokta + 1
MathAbs( Close2[i] - Open2[i] ) / Nokta + 1

if (Close1 < Open1 && Close2 > Open2){
SATIN ALMAK();
}
if (Close1 > Open1 && Close2 < Open2){
SATMAK();
}

Doğru yaptı? Nasıl çalıştırılır?
 
sviter-pro : Merhaba! Bir "ray" kalıbı yapmak istiyorum ama mum gövdesinin boyutunu hesaplayamıyorum....

Demo hesapta denediniz mi? Ne oluyor?

 
STARIJ :

Demo hesapta denediniz mi? Ne oluyor?

Hiç birşey çalışmıyor....(((
 
void trailing( string symbol, string comment, int magic, int trail_p)
  {
   if (symbol== NULL ) symbol= Symbol ();
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
         if ( OrderSymbol ()==symbol && OrderComment ()==comment && OrderMagicNumber ()==magic)
           {
             switch ( OrderType ())
              {
               case OP_BUY :
                   if ( OrderOpenPrice ()+(trail_p* Point )< Ask && OrderStopLoss ()+(trail_p* Point )< Ask )
                    {
                     if (! OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss ()+(trail_p* Point ), OrderTakeProfit (), OrderExpiration (), clrNONE ))
                       {
                         Print (" OrderModify завершилась с ошибкой #", GetLastError ());
                       }
                    }
                   break ;
               case OP_SELL :
                   if ( OrderOpenPrice ()-(trail_p* Point )> Bid && OrderStopLoss ()-(trail_p* Point )> Bid )
                    {
                     if (! OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss ()-(trail_p* Point ), OrderTakeProfit (), OrderExpiration (), clrNONE ))
                       {
                         Print (" OrderModify завершилась с ошибкой #", GetLastError ());
                       }
                    }
                   break ;
              }
           }
        }
         Comment ("StopLoss=", OrderStopLoss ());
     }
  }

Trolün neden her kene üzerinde çalıştığını söyleyebilir misiniz?