Lansmandan sonra aşağıdaki koşullarla beş dakikalık bir çizelgenin seyrini takip edecek bir Uzman Danışman: - sayfa 13
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Yine şanssızlık.
Çalışmak için yukarıdaki kodu deniyorum. Günlükte şu metni içeren bir hata görünür:
18:38:23 '153085': 2.006 sl'de açılış 1.00 GBPUSD siparişi: 2.0019 tp: 2.0003 başarısız [Geçersiz S/L veya T/P]
Bu ne anlama geliyor?
1) MT4'ü hangi DC'de kullanıyorsunuz?
2) Bu DC'de izin verilen zarar durdurma ve kâr alma mesafesi nedir?
Ondan önce, dün her şey t/r ve s/l gibi parametrelerle çalıştı :(((
Ben böyle yapardım...
Sözleşme özellikleri
(mini*100 için)
mikro için
(mini*100 için)
seviyeler
açıklık
satın almak
satış
//+------------------------------------------------------------------+ //| Expert-000001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" //---- extern string _Parameters_b_Lots = "Параметры модуля расчёта лота"; extern int LotsWayChoice = 0; // Способ выбора рабочего лота // 0-фиксированный, // 1-процент от депозита, // 2-фракционно-пропорциональный, // 3-фракционно-фиксированный, //extern int LotsPercent = 40; // Процент от депозита extern double StopLoss=13; // Stop Loss extern double TakeProfit=3; // Take Profit //extern int Percent=70; extern double Lots=1; // Объем сделки в % extern double Slippage =4; // Максимальное отклонение от запрошенной цены extern int MagicNumber=0; // Order ID extern int Delta=15; // Сигнал приказа в пунктах //extern int TimeForSleep = 0; // Время для отдыха после сделки extern int ticket; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int start() { int total=OrdersTotal(); if(total<1) {// если нет открытых позиций if (NumberOfBarOpenLastPos("", 0, -1, MagicNumber)>0){ //--- if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла больше Delta пунктов - продаем!!! { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"Продал"); if(ticket<0){Print("Ошибка открытия ордера SELL #",GetLastError());return(0);} } //------------------------------------------------------------------------- if (iOpen(NULL,0,0)-Bid >=Delta*Point) //цена упала больше Delta пунктов - покупаем!!! { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил"); if(ticket<0){Print("Ошибка открытия ордера BUY #",GetLastError());return(0);} } //---- } //if (NumberOfBarOpenLastPos }//if(OrdersTotal return(0); } //------------------------------ //+----------------------------------------------------------------------------+ //| Возвращает номер бара открытия последней позиции или -1. | //| Параметры: | //| sym - наименование инструмента ("" - текущий символ) | //| tf - таймфрейм ( 0 - текущий таймфрейм) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) { datetime oot; int i, k=OrdersTotal(); if (sym=="") sym=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sym) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (oot<OrderOpenTime()) oot=OrderOpenTime(); } } } } } } return(iBarShift(sym, tf, oot, True)); }Görünüşe göre satırda bir şeyler yanlış
Bu şart olmadan Uzman Danışman çalışır...
Neden oraya bazı lot hesaplama parametreleri eklediniz? Gereksiz...
'Lots' - değişken zaten tanımlanmış C:\Program Files\MetaTrader - E-Global TFG\experts\expert-001.mq4 (21, 15)
İşte kod:
//+------------------------------------------------------------------+ //| Expert-001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" #include <b-Lots.mqh> #include <stdlib.mqh> //---- //extern string _Parameters_b_Lots = "Параметры модуля расчёта лота"; //extern int LotsWayChoice = 0; // Способ выбора рабочего лота // 0-фиксированный, // 1-процент от депозита, // 2-фракционно-пропорциональный, // 3-фракционно-фиксированный, //extern int LotsPercent = 40; // Процент от депозита extern double StopLoss=13; // Stop Loss extern double TakeProfit=3; // Take Profit //extern int Percent=70; extern double Lots=0.9; // Объем сделки в % extern double Slippage =4; // Максимальное отклонение от запрошенной цены extern int MagicNumber=0; // Order ID extern int Delta=15; // Сигнал приказа в пунктах //extern int TimeForSleep = 0; // Время для отдыха после сделки extern int ticket; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int start() { int total=OrdersTotal(); if(total<1) {// если нет открытых позиций if (NumberOfBarOpenLastPos("", 0, -1, MagicNumber)>0){ //--- if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла больше Delta пунктов - продаем!!! { Lots=GetSizeLot(); ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"Продал"); if(ticket<0){Print("Ошибка открытия ордера SELL #",GetLastError());return(0);} } //------------------------------------------------------------------------- if (iOpen(NULL,0,0)-Bid >=Delta*Point) //цена упала больше Delta пунктов - покупаем!!! { Lots=GetSizeLot(); ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил"); if(ticket<0){Print("Ошибка открытия ордера BUY #",GetLastError());return(0);} } //---- } //if (NumberOfBarOpenLastPos }//if(OrdersTotal return(0); } //------------------------------ //+----------------------------------------------------------------------------+ //| Возвращает номер бара открытия последней позиции или -1. | //| Параметры: | //| sym - наименование инструмента ("" - текущий символ) | //| tf - таймфрейм ( 0 - текущий таймфрейм) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) { datetime oot; int i, k=OrdersTotal(); if (sym=="") sym=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sym) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (oot<OrderOpenTime()) oot=OrderOpenTime(); } } } } } } return(iBarShift(sym, tf, oot, True)); }Size dış parametrelerde ayrılmanın gerekli olduğunu yazdım. Ardından parti hesaplama parametreleri ÖZELLİKLER olarak ayarlanacaktır.(kütüphaneden)
Kontrol. Çalışıyor mu, çalışmıyor mu? Bir kere çalıştırdım işe yarıyor...
Ve MM de çalışır. İşlevle başa çıkmak için kalır
NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1)Bir uyarı açılır:
Başlatma işlevi bulunamadı ve çalıştırılamıyor.
Bu ne anlama geliyor?