Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1095

 
alvlaf :
Bu kod MQL5'te mi yazılmış?

için (int i=0; i<SymbolCount; i++)

{

if (CountTrades() == 0) // Emir sayısı sıfıra eşit olmalıdır

{

if (((TypeLastHistOrder() == OP_BUY && FiyatCloseLastHistOrder(OP_BUY) < FiyatOpenLastHistOrder(OP_BUY)) ||

(TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL))) && MaxOpenOrders > OrdersTotal() )

// Son anlaşma kârsızsa, aynısı açılır, ancak artan lotla

{

Tür = TypeLastHistOrder();

if (Tür == OP_BUY) Fiyat = LastAsk ;

if (Tür == OP_SELL) Fiyat = LastBid ;

Parti = NormalizeDouble(LotsLastHistOrder()*Çarpan, 2);

bilet = OrderSend( Symbols[i] , Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0 && MaxOpenOrders > OrdersTotal() )

// Son ticaretin karı sıfırsa, aynısını aç

{

Tür = TypeLastHistOrder();

if (Tür == OP_BUY) Fiyat = LastAsk ;

if (Tür == OP_SELL) Fiyat = LastBid ;

Parti = NormalizeDouble(LotsLastHistOrder(), 2);

bilet = OrderSend( Symbols[i] , Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > FiyatOpenLastHistOrder(OP_BUY))

|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))

|| CountHistTrades() == 0)// Son işlem karlıysa, sipariş açılır

{

if (SignalBuy( Symbols[i] ) && MaxOpenOrders > OrdersTotal())

{

bilet = OrderSend( Symbols[i] , OP_BUY, Lot, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (SignalSell( Symbols[i] ) && MaxOpenOrders > OrdersTotal())

{

bilet = OrderSend( Symbols[i] , OP_SELL, Lot, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

}

}

}

OnTick'te kelimelerden sonra kod vb... MQL4'te yazılmıştır, ancak MQL5'e ihtiyacınız var mı?

Her OrderSend için MaxOpenOrders koşulu OrdersTotal() değerinden büyük olmamalıdır.

Prosedür kodu (OrderSymbol()==Symbol() denetimi kaldırıldı ve Kapat/Aç yerine iClose()/iOpen() tanıtıldı), kodun doğruluğunu kontrol etmedi:

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

int CountTrades(int tipi = -1)

{

int cnt = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

cnt++;

}

}

dönüş(cnt);

}

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

int CountHistTrades(int tipi = -1)

{

int cnt = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

cnt++;

}

}

dönüş(cnt);

}

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

bool SignalBuy( string Sym )

{

for (int i=1; i<=Bekle; i++)

{

double C = iClose(Sym, PERIOD_M5, i); // Burada istenen zaman dilimini belirtin

çift O = iOpen(Sym, PERIOD_M5, i);

if ( C > O ) döner(yanlış);

}

if ((iBarShift( Sym , 0, TimeLastHistOrder()+Timeout) >= Wait || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))

&& CountHistTrades() > 0) return(true);

if (CountHistTrades() == 0) return(true);

dönüş(yanlış);

}

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

bool SignalSell( string Sym )

{

for (int i=1; i<=Bekle; i++)

{

double C = iClose(Sym, PERIOD_M5, i); // Burada istenen zaman dilimini belirtin

çift O = iOpen(Sym, PERIOD_M5, i);

if ( C < O ) dönüş(yanlış);

}

if ((iBarShift( Sym , 0, TimeLastHistOrder()+Timeout) >= Wait || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))

&& CountHistTrades() > 0) return(true);

if (CountHistTrades() == 0) return(true);

dönüş(yanlış);

}

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

tarihsaat TimeLastHistOrder(int tipi = -1)

{

tarihsaat sonzaman = 0;

tarihsaat açıksaat=0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > geçen sefer)

{

lasttime = OrderCloseTime();

açılış zamanı = OrderOpenTime();

}

}

}

}

dönüş (açık zaman);

}

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

intTypeLastHistOrder()

{

tarihsaat = 0;

int türü = -1;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Sihirli)

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

type = OrderType();

}

}

}

}

dönüş(tür);

}

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

double LotsLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift lot = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderOpenTime() > zaman)

{

zaman = OrderOpenTime();

lot = OrderLots();

}

}

}

}

dönüş(lot);

}

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

double PriceCloseLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift fiyat = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

fiyat = OrderClosePrice();

}

}

}

}

iade(fiyat);

}

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

double PriceOpenLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift fiyat = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

fiyat = OrderOpenPrice();

}

}

}

}

iade(fiyat);

}

 
alvlaf :

harici intExp = 1;

bilet = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, IntegerToString (Exp) , Magic);

Bu kod işinize yarar mı??? Burada tarih, geçerli olandan 10 dakika daha fazla olmalıdır (yani TimeCurrent() + minimum 600).

 
A13ksandr :

için (int i=0; i<SymbolCount; i++)

{

if (CountTrades() == 0) // Emir sayısı sıfıra eşit olmalıdır

{

if (((TypeLastHistOrder() == OP_BUY && FiyatCloseLastHistOrder(OP_BUY) < FiyatOpenLastHistOrder(OP_BUY)) ||

(TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL))) && MaxOpenOrders > OrdersTotal() )

// Son anlaşma kârsızsa, aynısı açılır, ancak artan lotla

{

Tür = TypeLastHistOrder();

if (Tür == OP_BUY) Fiyat = LastAsk ;

if (Tür == OP_SELL) Fiyat = LastBid ;

Parti = NormalizeDouble(LotsLastHistOrder()*Çarpan, 2);

bilet = OrderSend( Symbols[i] , Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0 && MaxOpenOrders > OrdersTotal() )

// Son ticaretin karı sıfırsa, aynısını aç

{

Tür = TypeLastHistOrder();

if (Tür == OP_BUY) Fiyat = LastAsk ;

if (Tür == OP_SELL) Fiyat = LastBid ;

Parti = NormalizeDouble(LotsLastHistOrder(), 2);

bilet = OrderSend( Symbols[i] , Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > FiyatOpenLastHistOrder(OP_BUY))

|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))

|| CountHistTrades() == 0)// Son işlem karlıysa, sipariş açılır

{

if (SignalBuy( Symbols[i] ) && MaxOpenOrders > OrdersTotal())

{

bilet = OrderSend( Symbols[i] , OP_BUY, Lot, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (SignalSell( Symbols[i] ) && MaxOpenOrders > OrdersTotal())

{

bilet = OrderSend( Symbols[i] , OP_SELL, Lot, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

}

}

}

OnTick'te kelimelerden sonra kod vb... MQL4'te yazılmıştır, ancak MQL5'e ihtiyacınız var mı?

Her OrderSend için MaxOpenOrders koşulu OrdersTotal() değerinden büyük olmamalıdır.

Prosedür kodu (OrderSymbol()==Symbol() denetimi kaldırıldı ve Kapat/Aç yerine iClose()/iOpen() tanıtıldı), kodun doğruluğunu kontrol etmedi:

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

int CountTrades(int tipi = -1)

{

int cnt = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

cnt++;

}

}

dönüş(cnt);

}

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

int CountHistTrades(int tipi = -1)

{

int cnt = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

cnt++;

}

}

dönüş(cnt);

}

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

bool SignalBuy( string Sym )

{

for (int i=1; i<=Bekle; i++)

{

double C = iClose(Sym, PERIOD_M5, i); // Burada istenen zaman dilimini belirtin

çift O = iOpen(Sym, PERIOD_M5, i);

if ( C > O ) döner(yanlış);

}

if ((iBarShift( Sym , 0, TimeLastHistOrder()+Timeout) >= Wait || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))

&& CountHistTrades() > 0) return(true);

if (CountHistTrades() == 0) return(true);

dönüş(yanlış);

}

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

bool SignalSell( string Sym )

{

for (int i=1; i<=Bekle; i++)

{

double C = iClose(Sym, PERIOD_M5, i); // Burada istenen zaman dilimini belirtin

çift O = iOpen(Sym, PERIOD_M5, i);

if ( C < O ) dönüş(yanlış);

}

if ((iBarShift( Sym , 0, TimeLastHistOrder()+Timeout) >= Wait || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))

&& CountHistTrades() > 0) return(true);

if (CountHistTrades() == 0) return(true);

dönüş(yanlış);

}

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

tarihsaat TimeLastHistOrder(int tipi = -1)

{

tarihsaat sonzaman = 0;

tarihsaat açıksaat=0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > geçen sefer)

{

lasttime = OrderCloseTime();

açılış zamanı = OrderOpenTime();

}

}

}

}

dönüş (açık zaman);

}

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

intTypeLastHistOrder()

{

tarihsaat = 0;

int türü = -1;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Sihirli)

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

type = OrderType();

}

}

}

}

dönüş(tür);

}

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

double LotsLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift lot = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderOpenTime() > zaman)

{

zaman = OrderOpenTime();

lot = OrderLots();

}

}

}

}

dönüş(lot);

}

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

double PriceCloseLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift fiyat = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

fiyat = OrderClosePrice();

}

}

}

}

iade(fiyat);

}

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

double PriceOpenLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift fiyat = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

fiyat = OrderOpenPrice();

}

}

}

}

iade(fiyat);

}

Birkaç hata veriyor, düzeltmek mümkün olmadı. Burada sorun ne?

//+------------------------------------------- --------------------+
//| BB1.mq4 |
//| Telif hakkı 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı 2016, MetaQuotes Software Corp."
#özellik bağlantısı "https://www.mql5.com"
#özellik sürümü "1.00"
#mülkiyet katı

dış çift Lot = 1; // Çok güzelsin
harici intExp = 1; // Son
harici int Bekle = 2; // Bir yöndeki mum sayısı
extern int Zaman Aşımı = 1; // Zaman aralığı
dış çift Çarpan = 3; // Çarpan
dış int kayma = 5; // kayma
harici int Sihir = 774274; // Büyü
extern int MaxOpenOrders = 1; // Maksimum sipariş sayısı

int bilet, Tür, SymbolCount;
çift fiyat, çok;

girdi dizisi TradeSymbols = "EURUSD_OP, GBPUSD_OP, AUDUSD_OP, NZDUSD_OP, USDCAD_OP, USDCHF_OP, GBPCAD_OP, AUDNZD_OP, CHFJPY_OP, GBPCHF_OP"; // ticaret sembolleri

stringSymbols[50]; // 50, olası maksimum karakter sayısıdır


//------------------------------------------------ --

int OnInit()

{

if (IsTesting() || !ExtractSymbols())

{

SembolSayı = 1;

Semboller[0] = Sembol();

}

dönüş(INIT_SUCCESSED);

}

//------------------------------------------------ --

bool ExtractSymbols()

{

ushort Virgül = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Virgül, Semboller);

for (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Semboller[i]);

Semboller[i] = StringTrimRight(Symbols[i]); // rastgele boşluklara karşı koruma

Symbols[i] = StringTrimLeft(Symbols[i]);

}

if (SymbolCount > 0) return(true);

dönüş(yanlış);

}

//------------------------------------------------ --

geçersiz OnTick()

{

için (int i=0; i<SymbolCount; i++)

{

if (CountTrades() == 0) // Emir sayısı sıfıra eşit olmalıdır

{

if (((TypeLastHistOrder() == OP_BUY && FiyatCloseLastHistOrder(OP_BUY) < FiyatOpenLastHistOrder(OP_BUY)) ||

(TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL))) && MaxOpenOrders > OrdersTotal())

// Son anlaşma kârsızsa, aynısı açılır, ancak artan lotla

{

Tür = TypeLastHistOrder();

if (Tür == OP_BUY) Fiyat = LastAsk;

if (Tür == OP_SELL) Fiyat = LastBid;

Parti = NormalizeDouble(LotsLastHistOrder()*Çarpan, 2);

bilet = OrderSend(Symbols[i], Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0 && MaxOpenOrders > OrdersTotal())

// Son ticaretin karı sıfırsa, aynısını aç

{

Tür = TypeLastHistOrder();

if (Tür == OP_BUY) Fiyat = LastAsk;

if (Tür == OP_SELL) Fiyat = LastBid;

Parti = NormalizeDouble(LotsLastHistOrder(), 2);

bilet = OrderSend(Symbols[i], Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > FiyatOpenLastHistOrder(OP_BUY))

|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))

|| CountHistTrades() == 0)// Son işlem karlıysa, sipariş açılır

{

if (SignalBuy(Symbols[i]) && MaxOpenOrders > OrdersTotal())

{

bilet = OrderSend(Symbols[i], OP_BUY, Lot, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (SignalSell(Symbols[i]) && MaxOpenOrders > OrdersTotal())

{

bilet = OrderSend(Symbols[i], OP_SELL, Lot, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

}

}

}

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

int CountTrades(int tipi = -1)

{

int cnt = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

cnt++;

}

}

dönüş(cnt);

}

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

int CountHistTrades(int tipi = -1)

{

int cnt = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

cnt++;

}

}

dönüş(cnt);

}

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

bool SignalBuy(stringSym)

{

for (int i=1; i<=Bekle; i++)

{

double C = iClose(Sym, PERIOD_M5, i); // Burada istenen zaman dilimini belirtin

çift O = iOpen(Sym, PERIOD_M5, i);

if (C > O) döner(yanlış);

}

if ((iBarShift(Sym, 0, TimeLastHistOrder()+Timeout) >= Wait || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))

&& CountHistTrades() > 0) return(true);

if (CountHistTrades() == 0) return(true);

dönüş(yanlış);

}

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

bool SignalSell(stringSym)

{

for (int i=1; i<=Bekle; i++)

{

double C = iClose(Sym, PERIOD_M5, i); // Burada istenen zaman dilimini belirtin

çift O = iOpen(Sym, PERIOD_M5, i);

if (C < O) döner(yanlış);

}

if ((iBarShift(Sym, 0, TimeLastHistOrder()+Timeout) >= Wait || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))

&& CountHistTrades() > 0) return(true);

if (CountHistTrades() == 0) return(true);

dönüş(yanlış);

}

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

tarihsaat TimeLastHistOrder(int tipi = -1)

{

tarihsaat sonzaman = 0;

tarihsaat açıksaat=0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > geçen sefer)

{

lasttime = OrderCloseTime();

açılış zamanı = OrderOpenTime();

}

}

}

}

dönüş (açık zaman);

}

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

intTypeLastHistOrder()

{

tarihsaat = 0;

int türü = -1;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Sihirli)

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

type = OrderType();

}

}

}

}

dönüş(tür);

}

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

double LotsLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift lot = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderOpenTime() > zaman)

{

zaman = OrderOpenTime();

lot = OrderLots();

}

}

}

}

dönüş(lot);

}

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

double PriceCloseLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift fiyat = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

fiyat = OrderClosePrice();

}

}

}

}

iade(fiyat);

}

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

double PriceOpenLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift fiyat = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

fiyat = OrderOpenPrice();

}

}

}

}

iade(fiyat);

}

 
Beyler yardım edin. Stforex'ten MT4 platformunda işlem yapıyorum. Emirleri açarken, grafikte giriş seviyesini göstermez ( noktalı çizgi yoktur) ve buna bağlı olarak bir stop loss ayarlamak uygun değildir. Neyin yanlış olduğunu ve nasıl düzeltileceğini bilen var mı?
 
gloomy159 :
Beyler yardım edin. Stforex'ten MT4 platformunda işlem yapıyorum. Emirleri açarken, grafikte giriş seviyesini göstermez (noktalı çizgi yoktur) ve buna göre bir stop loss ayarlamak uygun değildir. Neyin yanlış olduğunu ve nasıl düzeltileceğini bilen var mı?

http://prntscr.com/chfa36

Ayarlar - çizelgeler - İşlem seviyelerini göster

 

Beyler, hangi işlev 65 hatasını döndürebilir?

ERR_INVALID_ACCOUNT 65 Yanlış hesap numarası
 
testerMT4 :

http://prntscr.com/chfa36

Ayarlar - çizelgeler - İşlem seviyelerini göster

Bu özellik başlangıçta etkinleştirildi, ancak seviyeler hala grafikte görünmüyor
 
gloomy159 :
Bu özellik başlangıçta etkinleştirildi, ancak seviyeler hala grafikte görünmüyor
Renk ayarlarında, rengin hacimlere atanıp atanmadığını ve arka plan rengiyle aynı olup olmadığını kontrol edin.
 
alvlaf :

Birkaç hata veriyor, düzeltmek mümkün olmadı. Burada sorun ne?


OnTick'e ve LastAsk ve LastBid değişkenlerine kapanış ayracı eklemeyi unuttunuz. İşte hatasız derlenen kod, performansı kontrol etmedim:

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

//| BB1.mq4 |

//| Telif hakkı 2016, MetaQuotes Software Corp. |

//| https://www.mql5.com |

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

#property telif hakkı "Telif hakkı 2016, MetaQuotes Software Corp."

#özellik bağlantısı "https://www.mql5.com"

#özellik sürümü "1.00"

#mülkiyet katı


dış çift Lot = 1; // Çok güzelsin

harici intExp = 1; // Son

harici int Bekle = 2; // Bir yöndeki mum sayısı

extern int Zaman Aşımı = 1; // Zaman aralığı

dış çift Çarpan = 3; // Çarpan

dış int kayma = 5; // kayma

harici int Sihir = 774274; // Büyü

extern int MaxOpenOrders = 1; // Maksimum sipariş sayısı


int bilet, Tür, SymbolCount;

çift fiyat, çok;

girdi dizisi TradeSymbols = "EURUSD_OP, GBPUSD_OP, AUDUSD_OP, NZDUSD_OP, USDCAD_OP, USDCHF_OP, GBPCAD_OP, AUDNZD_OP, CHFJPY_OP, GBPCHF_OP"; // ticaret sembolleri

stringSymbols[50]; // 50, olası maksimum karakter sayısıdır

//------------------------------------------------ --

int OnInit()

{

if (IsTesting() || !ExtractSymbols())

{

SembolSayı = 1;

Semboller[0] = Sembol();

}

dönüş(INIT_SUCCESSED);

}

//------------------------------------------------ --

bool ExtractSymbols()

{

ushort Virgül = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Virgül, Semboller);

for (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Semboller[i]);

Semboller[i] = StringTrimRight(Symbols[i]); // rastgele boşluklara karşı koruma

Symbols[i] = StringTrimLeft(Symbols[i]);

}

if (SymbolCount > 0) return(true);

dönüş(yanlış);

}

//------------------------------------------------ --

geçersiz OnTick()

{

için (int i=0; i<SymbolCount; i++)

{

double LastAsk = SymbolInfoDouble(Semboller[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Semboller[i], SYMBOL_BID);

if (CountTrades() == 0) // Emir sayısı sıfıra eşit olmalıdır

{

if (((TypeLastHistOrder() == OP_BUY && FiyatCloseLastHistOrder(OP_BUY) < FiyatOpenLastHistOrder(OP_BUY)) ||

(TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL))) && MaxOpenOrders > OrdersTotal())

// Son anlaşma kârsızsa, aynısı açılır, ancak artan lotla

{

Tür = TypeLastHistOrder();

if (Tür == OP_BUY) Fiyat = LastAsk;

if (Tür == OP_SELL) Fiyat = LastBid;

Parti = NormalizeDouble(LotsLastHistOrder()*Çarpan, 2);

bilet = OrderSend(Symbols[i], Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0 && MaxOpenOrders > OrdersTotal())

// Son ticaretin karı sıfırsa, aynısını aç

{

Tür = TypeLastHistOrder();

if (Tür == OP_BUY) Fiyat = LastAsk;

if (Tür == OP_SELL) Fiyat = LastBid;

Parti = NormalizeDouble(LotsLastHistOrder(), 2);

bilet = OrderSend(Symbols[i], Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > FiyatOpenLastHistOrder(OP_BUY))

|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))

|| CountHistTrades() == 0)// Son işlem karlıysa, sipariş açılır

{

if (SignalBuy(Symbols[i]) && MaxOpenOrders > OrdersTotal())

{

bilet = OrderSend(Symbols[i], OP_BUY, Lot, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

if (SignalSell(Symbols[i]) && MaxOpenOrders > OrdersTotal())

{

bilet = OrderSend(Symbols[i], OP_SELL, Lot, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic);

}

}

}

}

}

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

int CountTrades(int tipi = -1)

{

int cnt = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

cnt++;

}

}

dönüş(cnt);

}

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

int CountHistTrades(int tipi = -1)

{

int cnt = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

cnt++;

}

}

dönüş(cnt);

}

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

bool SignalBuy(stringSym)

{

for (int i=1; i<=Bekle; i++)

{

double C = iClose(Sym, PERIOD_M5, i); // Burada istenen zaman dilimini belirtin

çift O = iOpen(Sym, PERIOD_M5, i);

if (C > O) döner(yanlış);

}

if ((iBarShift(Sym, 0, TimeLastHistOrder()+Timeout) >= Wait || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))

&& CountHistTrades() > 0) return(true);

if (CountHistTrades() == 0) return(true);

dönüş(yanlış);

}

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

bool SignalSell(stringSym)

{

for (int i=1; i<=Bekle; i++)

{

double C = iClose(Sym, PERIOD_M5, i); // Burada istenen zaman dilimini belirtin

çift O = iOpen(Sym, PERIOD_M5, i);

if (C < O) döner(yanlış);

}

if ((iBarShift(Sym, 0, TimeLastHistOrder()+Timeout) >= Wait || (Bekle == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout))

&& CountHistTrades() > 0) return(true);

if (CountHistTrades() == 0) return(true);

dönüş(yanlış);

}

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

tarihsaat TimeLastHistOrder(int tipi = -1)

{

tarihsaat sonzaman = 0;

tarihsaat açıksaat=0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > geçen sefer)

{

lasttime = OrderCloseTime();

açılış zamanı = OrderOpenTime();

}

}

}

}

dönüş (açık zaman);

}

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

intTypeLastHistOrder()

{

tarihsaat = 0;

int türü = -1;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Sihirli)

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

type = OrderType();

}

}

}

}

dönüş(tür);

}

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

double LotsLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift lot = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderOpenTime() > zaman)

{

zaman = OrderOpenTime();

lot = OrderLots();

}

}

}

}

dönüş(lot);

}

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

double PriceCloseLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift fiyat = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

fiyat = OrderClosePrice();

}

}

}

}

iade(fiyat);

}

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

double PriceOpenLastHistOrder(int tipi = -1)

{

tarihsaat = 0;

çift fiyat = 0;

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

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderMagicNumber() == Magic && (OrderType() == type || type == -1))

{

if (OrderCloseTime() > zaman)

{

zaman = OrderCloseTime();

fiyat = OrderOpenPrice();

}

}

}

}

iade(fiyat);

}

 

Merhaba!

Bir TP pozisyonunun kapalı olup olmadığını nasıl belirleyebilirim? OrderClosePrice()==OrderTakeProfit() öğesinin kullanmanın doğru yolu olacağını düşünmüyorum.