![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Bu çok yanlış. . .
OrderSelect (BuyTicket || SellTicket, SELECT_BY_TICKET);
(BuyTicket || SellTicket) true veya false ile sonuçlanır. . . ve bu durumda doğru veya yanlış 1 veya 0 olarak kabul edilecektir. . . SellTicket veya Buyticket numaranız değil. . .
Stoploss = 40 . . . . OrderSend'de stoploss kullandığınızda bu bir fiyattır. . . tırtıl sayısı değil, kayma tırtıl sayısıdır. . . belgeleri okuyun: OrderSend
tamam Ne demek istediğini biliyorum, bu yüzden OrderSelect'i kullanırken sırayı seçmek için bir komuta ihtiyacım var ... yoksa bu durumda OrderSelect genellikle yanlış mı?
Belgeleri okuyun. . . OrderLots , OrderTicket, OrderOpenPrice, vb. gibi öğeleri kullanabilmeniz için önce siparişi seçmek için OrderSelect gereklidir " Not: Sipariş daha önce OrderSelect() işlevi tarafından seçilmelidir.
Mevcut bir siparişe ait bir bilgiyi kullanmanız gerekmiyorsa, OrderSelect'e ihtiyacınız yoktur. yaparsan . . . iyi o zaman yaparsın
Belgeleri okuyun. . . OrderLots , OrderTicket, OrderOpenPrice, vb. gibi öğeleri kullanabilmeniz için önce siparişi seçmek için OrderSelect gereklidir " Not: Sipariş daha önce OrderSelect() işlevi tarafından seçilmelidir.
Mevcut bir siparişe ait bir bilgiyi kullanmanız gerekmiyorsa, OrderSelect'e ihtiyacınız yoktur. yaparsan . . . iyi o zaman yaparsın
Şu anda bu bilgiye ihtiyacım olacağını düşünüyorum çünkü piyasada bir pozisyon varsa onu kapatıp başka bir pozisyonla değiştirmem gerekiyor. OrderSelect'in bana bu şekilde yardımcı olacağını düşündüm. Ancak Orderselect sadece açık Emirler içinse ve piyasadaki aktif pozisyon için değilse kullanışlı değildir. haklı mıyım?
Ancak OrderSelect yardımcı olmazsa aktif pozisyonları nasıl kapatabilirim?
Saygılarımızla
Marc
nirvanamac :
Bu çoğunlukla doğru gibi görünüyor, ancak şimdi prog'un neden sadece 12 ve 23'teki satış emrini yerine getirdiğini ve satın alma emirlerini değil...?
Muhtemelen öyle. . ve muhtemelen yakalamadığınız bir hata oluşturur. . .
Denemek . . .
Sipariş Kapatınız yanlış. . . Sattığınız Satın Al'ı kapatmak için Sor'da Satın Al'ı açarsınız. . . Bid'de Satıyorsunuz, Aldığınız Sell'i kapatmak için Bid'de bir Sell açarsınız. . . Sor'dan satın alırsınız.
Sipariş Kapatınız yanlış. . . Sattığınız Satın Al'ı kapatmak için Sor'da Satın Al'ı açarsınız. . . Bid'de Satıyorsunuz, Aldığınız Sell'i kapatmak için Bid'de bir Sell açarsınız. . . Sor'dan satın alırsınız.
Bana yardım ettiğin için çok teşekkür ederim...Kodu senin ipuçlarınla değiştirdim. Bu şekilde görünüyor:
//+------------------------------------------- -------------------+
//| Der Stundentrader.mq4 |
//| Der Marc |
//| Daha fazla bilgi için Internetseite |
//+------------------------------------------- -------------------+
#özellik telif hakkı "Der Marc"
#özellik bağlantısı "Es gibt gar keine Internetseite"
//Wichtige Değişkeni
dış çift Minlot=0.01;
harici int Digits2Round=2;
harici int PercentOfFreeDepo=1;
extern int Kayma=5;
harici int SihirliSayı =1;
harici int TradeHour3=3;
harici int TradeHour4=4;
harici int TradeHour7=7;
harici int Ticaret Saati10=10;
harici int Ticaret Saati17=17;
harici int Ticaret Saati18=18;
harici int Ticaret Saati20=20;
harici int Ticaret Saati12=12;
harici int Ticaret Saati23=23;
harici int StopLoss=400;
//Küresel Değişken
int BuyTicket;
int SellTicket;
çift Kullanım Noktası;
int UseSlippage;
int açık satın alma = 0;
int opensel = 0;
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int init()
{
UsePoint = PipPoint(Symbol());
UseSlippage = GetSlippage(Symbol(), Slippage);
}
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int başlangıç()
{
double FreeDepo=NormalizeDouble(AccountBalance()-AccountMargin(),Digits2Round);
double Risk=NormalizeÇift((FreeDepo*PercentOfFreeDepo/100),Digits2Round);
double Lot=NormalizeÇift(Risk/(Kaybı Durdur/0.0001)*0.1,Digits2Round);
//===================== Parti büyüklüğünü ve riskini belirleyelim ===================== ==============
if ( Lot<Minlot )
{
Lot=Minlot;
}
Comment( "\n","Kabul edilebilir risk ",PercentOfFreeDepo, "% = ",Risk," ücretsiz paranın ",FreeDepo," lot olarak = ",Lot);
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if((OrderOpenTime()+3600) < TimeCurrent())
{
if (OrderType() == OP_BUY || OP_SELL)
{
bool Kapalı = OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(), UseSlippage, Red);
açık satın alma = 0;
opensel = 0;
}
if (OrderType() == OP_SEL)
{
Kapalı = OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(), UseSlippage, Red);
opensel = 0;
açık satın alma = 0;
}
}
}
}
//Sipariş
if ((TicaretSaati3==Saat())||(TicaretSaati4==Saat())||(TicaretSaati7==Saat())||(TicaretSaati10==Saat())||(TicaretSaati17==Saat()) ||(TradeHour18==Hour())||(TradeHour20== Hour()) && openbuy == 0) //Sinyal Alımı
{
openbuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,Ask - StopLoss * Point,0,"süre tüccar alış emri",MagicNumber,0,Mavi);
if (openbuy < 0) Print("OrderSend OP_BUY başarısız oldu, hata: ", GetLastError() );
}
//SatSiparişi
if ((TradeHour12==Saat())||(TradeHour23==Saat())&& openell == 0) //Signal Sell
{
opensell=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,Bid + StopLoss * Point,0,"zaman tüccar satış emri",MagicNumber,0,Green);
if (opensell < 0) Print("OrderSend OP_SELL başarısız oldu, hata: ", GetLastError() );
}
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//Pip Noktası Fonksiyonu
çift PipPoint (dize Para Birimi)
{
int CalcDigits = MarketInfo(Currency, MODE_DIGITS);
if(CalcDigits == 2 || CalcDigits == 3) double CalcPoint = 0.01;
else if(CalcDigits == 4 || CalcDigits == 5) CalcPoint = 0.0001;
dönüş (CalcPoint);
}
//Slippage Fonksiyonunu Al
int GetSlippage(dize Para Birimi, int SlippagePips)
{
int CalcDigits = MarketInfo(Currency, MODE_DIGITS);
if(CalcDigits == 2 || CalcDigits == 4) double CalcSlippage = SlippagePips;
else if(CalcDigits == 3 || CalcDigits == 5) CalcSlippage = SlippagePips * 10;
dönüş (CalcSlippage);
}
Geri testi çalıştırırken bir ERR_INVALID_TICKET (4108) Hata Mesajı var.