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

 

Merhaba.

Lütfen neyi yanlış yaptığımı anlamama yardım et.

Koşullu: Sor = 1.3000

PriceAsk = 1.3055 (Adım=50 ve Srpead=3 dahil)

boolSipariş=1,

if (Ask-PriceAsk+Step-Spread<=0 && BuyOrder== 0 ) bu koşul neden doğru kabul ediliyor?
 
ed3sss :

if ifadesinden hemen önce, koşulda bulunan tüm değişkenlerin değerlerini günlüğe kaydedin

Print("Ask:",Ask," PriceAsk:",PriceAsk," Step:",Step," Srpead:",Srpead," BuyOrder:",BuyOrder);
Elbette değişkenlerin bazı değerleri hayal ettiğiniz gibi olmayacaktır.
 
Merhaba, MT4 terminalimde, terminalin hemen altında bulunan döviz çiftlerinden birinin, örneğin (eurusd) bu özel çift ile terminal penceresini açmak için düğmesine tıkladığımda, pencereyi açtığımda, küçük bir tanesine çöküyor ve sağ üst köşede genişletmeniz gerekiyor, bu olmadan önce, bana bunun neden olduğunu ve nasıl düzeltileceğini söyleyin?
 
GaryKa :

if ifadesinden hemen önce, koşulda bulunan tüm değişkenlerin değerlerini günlüğe kaydedin

Print("Ask:",Ask," PriceAsk:",PriceAsk," Step:",Step," Srpead:",Srpead," BuyOrder:",BuyOrder);
Elbette değişkenlerin bazı değerleri hayal ettiğiniz gibi olmayacaktır.

Kontrol edin, teşekkürler)
 
hoz için Önce biraz teori


Ve şimdi sonuç

saat :
 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|        Функция, определения минимальной разрядности лота                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int LotDecimal()
{ return ( MathCeil ( MathAbs ( MathLog (bd_LOTSTEP) / MathLog ( 10 )) ));}
Nasıl çalıştığını anlamak istiyorum. Bu yüzden sordu.
Altı çizili ifade, bd_LOTSTEP'in 10 tabanlı logaritmasını , yani 10'un bd_LOTSTEP elde etme gücünü döndürür.
 

GaryKa :

if ifadesinden hemen önce, koşulda bulunan tüm değişkenlerin değerlerini günlüğe kaydedin

Print("Ask:",Ask," PriceAsk:",PriceAsk," Step:",Step," Srpead:",Srpead," BuyOrder:",BuyOrder);
Elbette değişkenlerin bazı değerleri hayal ettiğiniz gibi olmayacaktır.


ed3ss :


Kontrol edin, teşekkürler)

Teşekkürler, programda mantıksal bir hata buldum, şimdi her şey çalışıyor.
 

Merhaba.

Mevcut enstrüman Açık siparişlerin Kar/Zararı için grafikte bir yazıyı nasıl görüntüleyebilirim.

Bir Expert Advisor'da pozisyonların açılıp açılmadığını (terminali açıp kapatarak) kontrol etmek ve terminali kapatmadan önce son lot hacmini almak zordur.

Teşekkür ederim.

 
hoz :

Bu fonksiyonla yeni karşılaştım:

 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|        Функция, определения минимальной разрядности лота                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int LotDecimal()
{ return ( MathCeil ( MathAbs ( MathLog (bd_LOTSTEP) / MathLog ( 10 ))));}
Nasıl çalıştığını anlamak istiyorum. Bu yüzden sordu.

Eğer yanılıyorsam, özür dilerim. MathLog(x), ln(x)'dir (doğal logaritma). Başka bir tabana dönüştürme formülü log_a(b)=ln(b)/ln(a) şeklindedir, bu durumda ln(x)/ln(10)=lg(x) ( ondalık logaritma ) elde ederiz. 10 tabanlı logaritmanın lg(1...9) tamsayı kısmı 0, lg(10...99) 1, lg(100...999) 2, lg(1000...9999) ise 3 ve benzeri, yani. birden büyük bir sayının logaritmasının değeri, bu sayıdaki basamak sayısından (ondalık noktadan önce, sonra saymayın) eksi bire eşittir. x 0 ile bir arasındaysa, lg(0.1...0.9)'un tamsayı kısmı -1, lg(0.01...0.09) -2, lg(0.001...0.009) -3'e eşittir ve böylece üzerinde, yani eksiye bakmazsanız, 0'dan bire kadar olan sayının ondalık logaritması, ilk anlamlı basamağa kadar olan toplam sıfır sayısına eşittir. MathCeil'in nasıl çalıştığını bilmiyorum, ancak bir sayının tamsayı kısmını döndürürse, o zaman teoride bu işlev, sayı 1'den büyükse, ondalık basamağa kadar olan sayıdaki basamak sayısını eksi bir döndürür ve sayı 0'dan bire kadar ise ilk anlamlı basamağa kadar sayıdaki sıfır sayısı. Bu işlevin minimumu 1...9'a eşit x aralığındadır. Ayrıca, 10...99 ve 0.1...0.9'da fonksiyon 1'e, 100...999'da ve 0.01...0.09'da 2'ye eşittir ve bu böyle devam eder. Teoride...
 

İyi günler, programda bir tür söve var, zaten kafamı kırdım, neyin yanlış olduğunu parmağınla dürt. Sadece modifi koşulunun neden çalışmadığını bilmek istiyorum. Koşul doğru olmasa bile yine de yerine getirilir ve buna göre değişiklik sırasında 1 veya 130 hata açılır, hepinize teşekkür ederim.

//----------------------TP için siparişleri değiştirme--------
for (i = OrdersTotal() - 1; i >= 0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) devam ediyor;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
if (OrderType() == OP_BUY) {
if (OrderTakeProfit() == 0 || OrderTakeProfit() > OprTPB(TP)){
Yeniler();
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPB(TP),0, CLR_NONE );
}
}
if ((OrderType() == OP_SELL)) {
if (OrderTakeProfit() == 0 || OrderTakeProfit() < OprTPS(TP)){
Yeniler();
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPS(TP),0,CLR_NONE);
}
}
}
}
dönüş(0);
}

çift LastOpPrBuy(çift va=0)
{
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (va == 0) va = OrderOpenPrice();
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) devam ediyor;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_BUY && OrderOpenPrice()<va) va = OrderOpenPrice();
}
dönüş(va);
}
//------------------------------------------------ ----------------------------------
çift LastOpPrSell(çift va=0)
{
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (va == 0) va = OrderOpenPrice();
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) devam ediyor;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_SELL && OrderOpenPrice()>va) va = OrderOpenPrice();
}
dönüş(va);
}
//------------------------------------------------ ----------------------------------
çift OprTPB(int TP)
{
intj=0;
çift TPB=0;
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) devam ediyor;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_BUY)
{
TPB+=OrderOpenPrice();
j++;
}
}
eğer (j==0) {
j++;
TPB=Sor;
}
TPB=(TPB/j)+TP*Noktası;
dönüş(TPB);
}
//------------------------------------------------ ----------------------------------
çift OprTPS(int TP)
{
intj=0;
çift TPS=0;
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) devam ediyor;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_SEL)
{
TPS+=OrderOpenPrice();
j++;
}
}
eğer (j==0) {
j++;
TPS = Teklif;
}
TPS=(TPS/j)-TP*Noktası;
dönüş(TPS);
}
//------------------------------------

 
borilunad :
Evet, burada hepimiz yeniyiz! Basit şeyleri bilmediğimizi görmüyor musun? Başka nereden öğrenebiliriz! En azından bilmek istiyoruz, bazı insanların düşündükleri gibi değil, sadece kodu yapıştırmayı ve parayı hemen indirmeyi isteyecekler!


))) Ticaret mizahından:

- Bana karlı bir danışmanı nereden indireceğimi söyle!

- Konunun yukarısında bir yere bakın, oraya @MOZG@v4.12 adında bir robot koymuşlar.