Nasıl kodlanır? - sayfa 313

 

Merhaba,

sadece mevcut aktif grafik sembolünün alış veya satış emrini değiştirmek mümkün mü?

Siparişi açmak için WindowsPriceonDropped işlevini kullandığım bir komut dosyasında benim için çok yararlı olacak.

Teşekkür ederim

 

...

dasio,

Bunun gibi bir şey deneyin:

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)==false) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

{

// do the proccessing you wish here

}

}

dasio:
Merhaba,

sadece mevcut aktif grafik sembolünün alış veya satış emrini değiştirmek mümkün mü?

Siparişi açmak için WindowsPriceonDropped işlevini kullandığım bir komut dosyasında benim için çok yararlı olacak.

Teşekkür ederim
 

Kim bir meydan okuma ister?

Aşağıdakileri yapmak için bazı kodlara ihtiyacım var, ekteki ekran görüntüsüne bakın. Bu Al ticareti olacaktır.

Bir for döngüsü denedim, bir if koşulları karmaşası ve ikisi de aradığım sonuçları üretmedi.

Basit gibi görünüyor ama çalışmasını sağlayamadım.

Dosyalar:
maexample.jpg  54 kb
 

Giriş koşulunuz şuna benzer şekilde yazılabilir:

double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

cyber1:
Aşağıdakileri yapmak için bazı kodlara ihtiyacım var, ekteki ekran görüntüsüne bakın. Bu Al ticareti olacaktır.

Bir for döngüsü denedim, bir if koşulları karmaşası ve ikisi de aradığım sonuçları üretmedi.

Basit gibi görünüyor ama çalışmasını sağlayamadım.
 
mladen:
Giriş koşulunuz şuna benzer şekilde yazılabilir:
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

Ama bundan çok daha fazlası var. Gönderdiğiniz kod, Hareketli Ortalama'nın üzerinde yer alan çubuk için bana sinyal verecektir. Ama aynı zamanda, MA+5'i geçmemeleri koşuluyla, 5 bara kadar straddle barı geçen herhangi bir barda ticarete girmenin bir yoluna ihtiyacım var. Üst üste binme çubuğunda bir satın alma sinyali almamamın nedeni, üst üste binme çubuğunda DOĞRU olmayabilecek, ancak üst üste binme çubuğunu 5 bara kadar herhangi bir çubukta DOĞRU ise ve DOĞRU bir değer göstermesi gereken başka bir göstergenin olmasıdır. MA +5 sınırını aştım hala ticaret yapabilirim. Kurulum başına yalnızca bir tane birden fazla işlem yapmamak.

Aşağıdakiler şimdiye kadar sahip olduklarım. Bu noktada, yalnızca uygun çubukları altında bir okla işaretliyorum, yalnızca satın alır. Bunu çözdükten sonra, siparişi yürütmek için kodumu gireceğim. Basit göründüğünü biliyorum ama bariz bir şeyi kaçırmadığım sürece değil.

//+------------------------------------------------------------------+

double Poin;

//+------------------------------------------------------------------+

//| Custom initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicators

if (Point==0.00001) Poin=0.0001;

else {

if (Point==0.001) Poin=0.01;

else Poin=Point;

}

//----

return(0);

}

//+------------------------------------------------------------------+

// +

//+------------------------------------------------------------------+

int deinit(){

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start(){

int MAM1StartBar=1;

int M1MAEntryPoint1=0;

int M1MAEntryPoint2=5;

string sObjName;

//------Indicators-------------//

double MAM0= iMA(NULL,0,20,0,0,0,MAM1StartBar);

double MAM1= iMA(NULL,0,20,0,0,0,MAM1StartBar+1);

double M1High0 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1High1 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1High2 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1High3 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1High4 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1High5 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

double M1Low0 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1Low1 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1Low2 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1Low3 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1Low4 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1Low5 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

// double MAM1TRL1=NormalizeDouble(MAM0+M1MAEntryPoint1*Poin,Digits);

// double MAM1TRL2=NormalizeDouble(MAM0+M1MAEntryPoint2*Poin,Digits);

//Blue arrow indicates straddle bar

if(M1High0>= MAM0 && M1Low0<=MAM0){

sObjName="Test_BLine1"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1.5*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Blue);

}

//Aqua arrow indicates straddle bar+1

if(M1Low1=MAM0){

if(M1High1<=MAM0+M1MAEntryPoint2*Poin){

if(M1Low0 > MAM0){

sObjName="Test_BLine2"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Aqua);

}

}

}

//----

return(0);

}

 

Bu ekran görüntüsünde 4. çubukta iptal etmeniz gerekir çünkü 3. çubuk MA +5 sınırını aşıyor, bu da 4. çubukta 3. çubuğun MA +5 sınırını aşıp aşmadığını kontrol etmeniz gerektiği anlamına geliyor. bu ticaret kurulumu.

Hiçbiri MA +5 sınırını aşmadığı için burada 5 çubuğun tümü uygundur

Dosyalar:
 

Bu ekran görüntüsünde 4. çubukta iptal etmeniz gerekir çünkü 3. çubuk MA +5 sınırını aşıyor, bu da 4. çubukta 3. çubuğun MA +5 sınırını aşıp aşmadığını kontrol etmeniz gerektiği anlamına geliyor, bu işin sonuydu. ticaret kurulumu.

Hiçbiri MA +5 sınırını aşmadığı için burada 5 çubuğun tümü uygundur

 

...

siber1

Örneklerinizde gördüğüm kadarıyla, tanımladığınız şekilde iptal edebilmek için geleceği de bilmeniz gerekir ("iptal" çubuğundan önce kurallar uygulanır ve bir git sinyali verirdi)

Öte yandan, koşulun girmesi için tüm çubukları geri test etmeye çalışırsanız, sonunda her zaman bir "kural ihlali" yaşarsınız ve pozisyona giremezsiniz.

cyber1:
Bu ekran görüntüsünde 4. çubukta iptal etmeniz gerekir çünkü 3. çubuk MA +5 sınırını aşıyor, bu da 4. çubukta 3. çubuğun MA +5 sınırını aşıp aşmadığını kontrol etmeniz gerektiği anlamına geliyor, bu işin sonu bu oldu ticaret kurulumu.

Hiçbiri MA +5 sınırını aşmadığı için burada 5 çubuğun tümü uygundur

 

Tümünü kapat Açık ticaret EA

Bu ea yapmak için bana yardım edebilecek var mı?

Bu EA, hedef kâr ve zarara ulaşıldığında her zaman açık ticaret çiftini kapatacaktır.

Her şeyi kapattığında, açılan ticareti izlemeye başlayın.

Bunu yapmak için sınırlı bir yeteneğim var.

Bu adet her çiftten ana yemekten ayrıdır.

 

Sinyal ve direnç/destek dinamik hatları.

Bu göstergeyi MT4 Dili'ne çevirmeme yardım eder misiniz?

a:=(hhv(kapat,tpr)+llv(kapat,tpr)+kapat)/3;

b:=(a1*2)-hhv(kapat,tpr);

hareketli b:=mov(b,tpr,basit);

c:=(a1*2)-llv(kapat,tpr);

hareketli c:=mov(c,tpr,basit);

d:=(hhv(kapat,tpr/2)+llv(kapat,tpr/2)+kapat)/3;

hareketli d:=mov(d,tpr/2,basit);

akış:=(b+c+d)/3;

hareketli akış:=mov(akış,tpr,basit).

hhv= maksimum dönem değeri (seçilen zaman aralığındaki en yüksek kapanış fiyatı değeri)

llv= min dönem değeri (seçilen dönemdeki kapanış fiyatının en düşük değeri)

tpr=zaman aralığı (1'den istediğinize kadar)

mov= hareketli ortalama.

Çıktıda "akış" ve "hareketli akış" olmalıdır! Ayrıca "b", "b'yi hareket ettirmek", "c", "c'yi hareket ettirmek", "d" ve "d'yi hareket ettirmek" de olsa bu kötü bir şey değil!

Teşekkürler.

Bu forum bir harika......

Lucmat

Dosyalar:
immagine.jpg  258 kb