Kodlama yardımı - sayfa 109

 

bekleyen sipariş değişikliği

Herkese merhaba, bekleyen siparişler için bir fiyat değişikliği programlamaya çalıştım. İlk EA'larımdan biri. Daha sonra karmaşık olanları yazabilmek için olabildiğince çok EA yazmak istiyorum. Sipariş değişikliğimde, demo hesabımda bir çizelgeye koyduğumda çalışmama sorunu yaşıyorum. Birisi hataları bulup düzelterek bana yardımcı olabilir mi? Teşekkürler. Gerçekten daha fazla ipucum yok. Şerefe

{ RefreshRates(); double ppoint=MarketInfo(OrderSymbol(), MODE_POINT); int total=OrdersTotal(); double pBid=MarketInfo(OrderSymbol(), MODE_BID); double pAsk=MarketInfo(OrderSymbol(), MODE_ASK); double priceNew; //---- for(int i=0; i50*ppoint) { priceNew=(pBid-50*ppoint); OrderModify(OrderTicket(),priceNew,0,OrderStopLoss(),OrderTakeProfit()); Print("Modified Order"); } } } if (OrderType()==OP_SELLSTOP) { if (OrderOpenPrice()-pAsk>50*ppoint) { priceNew=(pAsk+50*ppoint); OrderModify(OrderTicket(),priceNew,0,OrderStopLoss(),OrderTakeProfit()); Print("Modified Order"); } } } } }
 

Hey Robert, şimdiye kadarki yardımların için teşekkürler. Kodu buraya nasıl düzgün bir şekilde gönderirim? Teşekkürler ve alkış.

 
fabian103:
Hey Robert, şimdiye kadarki yardımların için teşekkürler. Kodu buraya nasıl düzgün bir şekilde gönderirim? Teşekkürler ve alkış.

fabian103

Bu php kod kutusuna basit bir kopyalayıp yapıştırmalısınız.

Nedense kodunuz "her yerde". Dene. İşe yaramazsa, kodun revize edilmesini istediğiniz kısmını ayrı bir dosya olarak eklemeyi deneyin (ek aracını kullanarak - resimde gösterilen)

Dosyalar:
attach.gif  36 kb
 

Merhaba,

Stokastik gösterge içindeki bollinger bantlarının değerini hesaplamaya çalışıyorum ama bunu başaramadım.

Çifte atıfta bulunulan değeri alıyorum, ancak 0 ile 100 arasında olması gereken değere ihtiyacım var.

Herhangi bir işaretçi?

teşekkürler

 
metcalfe:
Merhaba,

Stokastik gösterge içindeki bollinger bantlarının değerini hesaplamaya çalışıyorum ama bunu başaramadım.

Çifte atıfta bulunulan değeri alıyorum, ancak 0 ile 100 arasında olması gereken değere ihtiyacım var.

Herhangi bir işaretçi?

teşekkürler

Bir stokastiğin Bollinger bantlarını hesaplamayı kastettiğinizi varsayıyorum (sembol fiyatları yerine stokastik değerleri kullanarak). Bunu yerleşik bir iBands() ile yapamazsınız çünkü her zaman ana grafik fiyatlarını kullanır.

iBandsOnArray() işlevini kullanabilirsiniz, ancak bununla birlikte sonsuz bir metatrader sorununuz olur: sapmalar yalnızca tamsayı çarpanları olabilir. Sapmaları kesirli değerlere ayarlayamazsınız. Bu nedenle, en iyisi, herhangi bir değerde ve herhangi bir bant genişliğinde kendi Bollinger bantlarınızı hesaplamak için iStdDevOnArray() ve iMaOnArry() işlevlerini kullanmaktır. Stokastik olması durumunda, bunu yapan kod şöyle görünür:

for(int i=limit; i>=0; i--) stoch = iStochastic(NULL,0,StochPeriod,1,StochSlowing,MODE_SMA,StochPrice,MODE_MAIN,i);

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

{

double dev = iStdDevOnArray(stoch,0,BollingerPeriod,0,MODE_SMA,i);

bollmi = iMAOnArray(stoch,0,BollingerPeriod,0,MODE_SMA,i);

bollup = bollmi+BollingerDeviations*dev;

bolldn = bollmi-BollingerDeviations*dev;

}

Göstergenin kendisini de ekleyerek, denemeye devam edebilirsiniz. Grafikte şöyle görünüyor:

______

Not: Bantların değerleri, sapmalar için hangi bant çarpanını kullandığınıza ve Bollinger bantları hesaplamasının uzunluğunun ne olduğuna bağlı olarak (Stochastic'in 0 veya 100 civarında gezindiği durumlarda) 0 ve 100 sınırlarını aşabilir.

 
mladen:
Bir stokastiğin Bollinger bantlarını hesaplamayı kastettiğinizi varsayıyorum (sembol fiyatları yerine stokastik değerleri kullanarak). Bunu yerleşik bir iBands() ile yapamazsınız çünkü her zaman ana grafik fiyatlarını kullanır.

iBandsOnArray() işlevini kullanabilirsiniz, ancak bununla birlikte sonsuz bir metatrader sorununuz olur: sapmalar yalnızca tamsayı çarpanları olabilir. Sapmaları kesirli değerlere ayarlayamazsınız. Bu nedenle, en iyisi, herhangi bir değerde ve herhangi bir bant genişliğinde kendi Bollinger bantlarınızı hesaplamak için iStdDevOnArray() ve iMaOnArry() işlevlerini kullanmaktır. Stokastik olması durumunda, bunu yapan kod şöyle görünür:

Bu SÜPER MÜTHİŞ!!!!!

Çok teşekkürler, uzun zamandır uğraşıyorum.

Ve süper hızlı cevap için teşekkürler.

Aptalca bir soru daha.

Indi çok iyi çalışıyor ama bantların değeri hakkında her biri için doğru sayıyı alamıyorum.

Örneğin resimdeki gibi 81...67..54...

 
metcalfe:
Bu SÜPER MÜTHİŞ!!!!!

Çok teşekkürler, uzun zamandır uğraşıyorum.

Ve süper hızlı cevap için teşekkürler.

Aptalca bir soru daha.

Indi çok iyi çalışıyor ama bantların değeri hakkında her biri için doğru sayıyı alamıyorum.

Örneğin resimdeki gibi 81...67..54...

:) :)

Bu örnekte stokastik uzunluk 32 olarak ayarlanmıştır. Varsayılan parametrelerle karşılaştırıldığında tek fark budur.

 
mladen:
:):):) Bu örnekte stokastik uzunluk 32 olarak ayarlanmıştır. Varsayılan parametrelerle karşılaştırıldığında tek fark budur.

Kusura bakmayın..Sormak istediğimi çok iyi anlatamadım.

Benim adetimde resimdeki gibi stok penceresinde örneğin üst veya alt bant numarasını almaya çalışıyorum. Örneğin, 81.8116 olan üst bandı almak istiyorum ve olarak kodladım.

Comment(iCustom(NULL,0,"name",24,0,MODE_UPPER,0)); \\indi'yi yeniden adlandırdı

ama doğru numaraya sahip değilim.

nerede hatalıyım?

teşekkürler

 
metcalfe:
Kusura bakmayın..Sormak istediğimi çok iyi anlatamadım.

Benim adetimde resimdeki gibi stok penceresinde örneğin üst veya alt bant numarasını almaya çalışıyorum. Örneğin, 81.8116 olan üst bandı almak istiyorum ve olarak kodladım.

Comment(iCustom(NULL,0,"name",24,0,MODE_UPPER,0)); \\indi'yi yeniden adlandırdı

ama doğru numaraya sahip değilim.

nerede hatalıyım?

teşekkürler

Bunu şu şekilde yapın:

double upperBand = iCustom(NULL,0,"name",24,1,0,0);[/PHP]

The problem was that you can not put 0 in place of the slowing parameter since in that case metatrader will cause an error when calculating stochastic, and you will always get 0 as a return value, so use 1 instead (it is equivalent to no smoothing of the stochastic value). Also, better to use buffer numbers (MODE_MAIN is a reserved word in MQL - it 0 but in some cases they are not what you expect them to be). To get the rest of the values you would then have to write something similar to this :

[PHP]double middleBand = iCustom(NULL,0,"name",24,1,1,0);

double lowerBand = iCustom(NULL,0,"name",24,1,2,0);
 

Tamam...

Süper teşekkürler.

Beni kurtardın....

Neden: