[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 174
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Lütfen bana söyle. Bir pencerede Uzman Danışmanım var (örneğin, USDJPY), ancak belirli bir anda diğer açık pencerelere oklar ( ObjectCreate ) koymam gerekiyor - örneğin, AUDUSD, EURUSD vb.
ObjectCreate yardımına bakarsanız, yalnızca bir göstergenin veya bir Uzman Danışmanın yerleştirildiği açık bir grafikte çalıştığını açıkça görebilirsiniz. Çıkış yolu, verileri global değişkenler veya bir dosya aracılığıyla gerekli pencerede Expert Advisor'a aktarmak olabilir.
ObjectCreate yardımına bakarsanız, yalnızca bir göstergenin veya bir Uzman Danışmanın yerleştirildiği açık bir grafikte çalıştığını açıkça görebilirsiniz. Çıkış yolu, verileri global değişkenler veya bir dosya aracılığıyla gerekli pencerede Expert Advisor'a aktarmak olabilir.
Yani, herhangi bir şekilde başka bir pencereden? Teşekkür ederim.
Bu bekleyen emir değiştirme işlevi, harici değişkenler aracılığıyla nasıl devre dışı bırakılır?
Harici değişkenler aracılığıyla devre dışı bırakılan bekleyen siparişleri değiştirme işlevi nasıl yapılır?
öyle bir şey
Teşekkür ederim! Vinin!
denemek)
Programcılar yardım eder, zaten açık olanlar olsa bile danışmanda siparişleri açmanız gerekir. Bu bir kanal danışmanıdır.Her satıra dokunduğunuzda ilgili sırayı açmanız gerekir. Ve sonra bir sipariş açacak ve kapanana kadar diğeri açılmıyor.Şimdiden teşekkürler.
//+------------------------------------------------------------------+
//| TradeChannel.mq4 |
//| Copyright © 2005, Yuri Makarov |
//| http://mak.tradersmind.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Yuri Makarov"
#property link "http://mak.tradersmind.com"
extern double Lots = 1.0;
extern int Slippage = 5;
extern int TimeOut = 10000;
double SetLevel(double Level, double NewLevel, string ObjName, int Style)
{
switch (Style)
{
case 1: // Buy Order line
ObjectSet(ObjName,OBJPROP_COLOR,Blue);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(ObjName,OBJPROP_WIDTH,2);
break;
case 2: // Sell Order line
ObjectSet(ObjName,OBJPROP_COLOR,Red);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(ObjName,OBJPROP_WIDTH,2);
break;
case 3: // Buy Stop line
ObjectSet(ObjName,OBJPROP_COLOR,Blue);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_DASH);
ObjectSet(ObjName,OBJPROP_WIDTH,1);
break;
case 4: // Sell Stop line
ObjectSet(ObjName,OBJPROP_COLOR,Red);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_DASH);
ObjectSet(ObjName,OBJPROP_WIDTH,1);
break;
case 5: // Buy Take line
ObjectSet(ObjName,OBJPROP_COLOR,Blue);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(ObjName,OBJPROP_WIDTH,1);
break;
case 6: // Sell Take line
ObjectSet(ObjName,OBJPROP_COLOR,Red);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(ObjName,OBJPROP_WIDTH,1);
break;
}
if (MathAbs(NewLevel - Close[0]) < MathAbs(Level - Close[0])) return (NewLevel);
else return (Level);
}
int start()
{
int NumObj = ObjectsTotal();
double Spread = Ask - Bid;
double pBuy = 0;
double pSell = 0;
double pBuyStop = 0;
double pBuyTake = 0;
double pSellStop = 0;
double pSellTake = 0;
for (int i = 0; i < NumObj; i++)
{
string ObjName = ObjectName(i);
string ObjDesc = ObjectDescription(ObjName);
double Price = 0;
switch (ObjectType(ObjName))
{
case OBJ_HLINE:
Price = ObjectGet(ObjName,OBJPROP_PRICE1);
break;
case OBJ_TREND:
Price = ObjectGetValueByShift(ObjName,0);
break;
}
if (Price > 0)
{
if (ObjDesc == "Buy") pBuy = SetLevel(pBuy, Price, ObjName, 1); else
if (ObjDesc == "Sell") pSell = SetLevel(pSell, Price, ObjName, 2); else
if (ObjDesc == "Stop")
{
if (Price < Close[0]) pBuyStop = SetLevel(pBuyStop, Price, ObjName, 3);
else pSellStop = SetLevel(pSellStop, Price, ObjName, 4);
} else
if (ObjDesc == "Take")
{
if (Price > Close[0]) pBuyTake = SetLevel(pBuyTake, Price, ObjName, 5);
else pSellTake = SetLevel(pSellTake, Price, ObjName, 6);
}
}
}
int NumOrders = OrdersTotal();
int NumPos = 0;
for (i = 0; i < NumOrders; i++)
{
OrderSelect(i, SELECT_BY_POS);
if (OrderSymbol() != Symbol()) continue;
NumPos++;
double tp = OrderTakeProfit();
double sl = OrderStopLoss();
if (OrderType() == OP_BUY)
{
if (Bid > pSell && pSell > 0)
{
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Red);
Sleep(TimeOut);
return(0);
}
if (MathAbs(tp - pBuyTake) > Spread || MathAbs(sl - pBuyStop) > Spread)
{
OrderModify(OrderTicket(), Ask, pBuyStop, pBuyTake, 0);
Sleep(TimeOut);
return(0);
}
}
if (OrderType() == OP_SELL)
{
if (Ask < pBuy)
{
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Red);
Sleep(TimeOut);
return(0);
}
if (MathAbs(tp - pSellTake) > Spread || MathAbs(sl - pSellStop) > Spread)
{
OrderModify(OrderTicket(), Bid, pSellStop, pSellTake, 0);
Sleep(TimeOut);
return(0);
}
}
}
if (NumPos > 0) return(0);
if ((pSell - pBuy) < Spread*2) return(0);
if (Bid > pSell && pSell > pBuyStop)
{
OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, pSellStop, pSellTake);
Sleep(TimeOut);
return(0);
}
if (Ask < pBuy && (pBuy < pSellStop || pSellStop == 0))
{
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, pBuyStop, pBuyTake);
Sleep(TimeOut);
return(0);
}
}
int init()
{
return(0);
}
int deinit()
{
return(0);
}
Büyük olasılıkla bu satır sizi engelliyor:
İşte nasıl başlayabileceğiniz. Bunu kaldır.
Ve alım ve satım giriş mekanizmasını ayırın. I. Kim'in işlevini alın (kodun en sonuna ekleyin)
O zaman bir satın alma anlaşması açmanın koşulu şöyle olacaktır:
Ve bir satış anlaşması açmanın şartı:
Bu sorun muhtemelen 2003'ten bile önce çözüldü. Ama başkası bilmediği için paylaşayım)))
Grafiğe sağ tıklayın - özellikleri seçin - genel sekmesi - sabit ölçek için kutuyu işaretleyin - Tamam
Ardından, fareyi fiyat ile ölçeğe doğrultun, sol fare düğmesine basın ve bırakmadan fareyi yukarı / aşağı hareket ettirerek ihtiyacınız olan ölçeği ayarlayın.
Ama uzağa tırmanmamak için ana pencereye getirmek mümkün mü? aksi takdirde tırmanırken zaman kaybedilir ve bu nedenle MT kullanımında sakıncalar vardır.
Kanal Danışmanı
Programcılar yardım eder, zaten açık olanlar olsa bile danışmanda siparişleri açmanız gerekir. Bu bir kanal danışmanıdır.Her satıra dokunduğunuzda ilgili sırayı açmanız gerekir. Ve sonra bir sipariş açacak ve kapanana kadar diğeri açılmıyor.Şimdiden teşekkürler.
Yukarıdaki mesajda anlattıklarımı yaptım. Konum sayısının f'incisini ekledim ve sondaki konum açma bloğunu aşağıdaki ile değiştirdim:
Artık danışman aynı anda en az 2 pozisyon tutabilir.
Ne yazık ki işi kontrol edemiyorum çünkü kanalları çizen bir gösterge eklemeyi unuttunuz.