EA'm neden tekrar test yaparken negatif kar sağlamaya devam ediyor? - sayfa 4 12345 Yeni yorum [Silindi] 2013.02.03 02:29 #31 bu benim son kodum. bana istediğim sonuçları vermemesi dışında yanlış bir şey düşünemiyorum //+------------------------------------------------------------------+ //| RSI_strategy_cyxstudio.mq4 | //| Copyright 2013, Tjipke de Vries | //| https://forum.mql4.com/53695/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #include <stderror.mqh> #include <stdlib.mqh> extern int RSIPeriod = 2; //number of periods for RSI extern double UpperBound = 95; //set upper bound value for RSI extern double LowerBound = 5; //set lower bound value for RSI extern double Lots = 0.1; extern double StopLoss = 60; //Set the stop loss level extern double TakeProfit = 120; //Set the take profit level extern double TrailingStop = 40; //extra settings for OrderSend extern int MagicNumber = 54333; extern string CommentEA = "RSI strategy"; extern int Slippage.Pips = 3; //--- //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- Alert(OrdersTotal()); //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int Ticket1; int Ticket2; bool Ticket3; bool Ticket4; double SL,TP; int Total; double MagicNo; double Slippage; int cnt; double pAsk = MarketInfo(Symbol(), MODE_ASK); double pBid = MarketInfo(Symbol(), MODE_BID); double MA200 = iMA(NULL, 1440, 200, 0,MODE_SMA,PRICE_CLOSE, 0); //200 day Moving Average double MA5 = iMA(NULL, 1440, 5, 0,MODE_SMA,PRICE_CLOSE, 0); // 5 day Moving Average double CurrentRSI = iRSI (NULL, 0, RSIPeriod,PRICE_CLOSE ,0); double PrevRSI = iRSI (NULL, 0, RSIPeriod,PRICE_CLOSE ,1); double LastRSI = iRSI (NULL, 0, RSIPeriod,PRICE_CLOSE ,2); if(Bars<100) { Print("bars less than 100"); return(0); } if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } //Check for open orders if there are none then check for conditions to open one if (OrdersTotal() ==0 && LastRSI > PrevRSI && PrevRSI > CurrentRSI && CurrentRSI < LowerBound && pAsk > MA200) { //Condition to execute buy entry Ticket1 = OrderSend(Symbol(), OP_BUY, Lots, pAsk, Slippage.Pips, pBid - ( StopLoss * Point ), pAsk + ( TakeProfit * Point ), "Buy.", MagicNumber,0,Yellow); //execute buy order if(Ticket1>0) { if(OrderSelect(Ticket1,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } if (Ticket1 < 0) { Print("Error opening BUY order : ",GetLastError()); return(0); } if (OrdersTotal() ==0 && LastRSI < PrevRSI && PrevRSI < CurrentRSI && CurrentRSI > UpperBound && pBid < MA200) { //Condition to execute sell entry Ticket2 = OrderSend(Symbol(), OP_SELL, Lots, pBid, Slippage.Pips, pAsk + ( StopLoss * Point ), pBid - ( TakeProfit * Point ), "Sell.",MagicNumber, 0, Yellow) ; //execute sell order if(Ticket2>0) { if(OrderSelect(Ticket2,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } if (Ticket2<0) { Print("Error opening SELL order : ",GetLastError()); return(0); } } } int ticket=OrderTicket(); double lots=OrderLots(); for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { if (OrderType() == OP_BUY && pBid > MA5) { Ticket3 = OrderClose(ticket, lots, pBid, Slippage.Pips); if (Ticket3 == true ) { Print("BUY position closed", OrderClosePrice()); } if (Ticket3 == false) { Print("Error closing BUY position", ErrorDescription(GetLastError())); } } if (OrderType() == OP_SELL && pBid < MA5) { Ticket4 = OrderClose(ticket, lots, pAsk, Slippage.Pips); if (Ticket4 == true ) { Print("SELL position closed", OrderClosePrice()); } if (Ticket4 == false) { Print("Error closing SELL position", ErrorDescription(GetLastError())); } } } } } return(0); } Tjipke de Vries 2013.02.03 08:31 #32 Bu konuya 2. sayfaya bakarsanız size ne verdiğimi bulabilirsiniz. //+------------------------------------------------------------------+ //| RSI_strategy_cyxstudio.mq4 | //| Copyright 2013, Tjipke de Vries | //| https://forum.mql4.com/53695/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" extern int RSIPeriod = 3 ; //number of periods for RSI //WHY DIDN't YOU LEAVE THIS VALUE 3 extern double UpperBound = 90 ; //set upper bound value for RSI //WHY DID YOU MAKE THIS TO 95 extern double LowerBound = 5 ; //set lower bound value for RSI extern int MASlowPeriod = 200 ; extern int MAFastPeriod = 5 ; extern double Lots = 0.1 ; extern double StopLoss = 60 ; //Set the stop loss level extern double TakeProfit = 120 ; //Set the take profit level extern double TrailingStop = 40 ; //extra settings for OrderSend extern int MagicNumber = 54333 ; extern string CommentEA = "RSI strategy" ; extern int Slippage.Pips = 3 ; int BUYS= 1 ,SELLS= 1 ; //WHY DID YOU REMOVE THIS FROM YOUR CODE //++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.015 0.0150 int Digits .pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) //--- //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- if ( Digits % 2 == 1 ) // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262 {pips2dbl = Point * 10 ; pips2points = 10 ; Digits .pips = 1 ;} else {pips2dbl = Point ; pips2points = 1 ; Digits .pips = 0 ;} // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //WHY DID YOU REMOVE THIS //---- //?? Alert(OrdersTotal()); //WHAT IS THIS DOING HERE THIS IS NOT IN MY CODE //---- return ( 0 ); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return ( 0 ); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int Ticket; double SL,TP; int Total; double pAsk = MarketInfo( Symbol (), MODE_ASK); double pBid = MarketInfo( Symbol (), MODE_BID); double MA200 = iMA ( NULL , 1440 , MASlowPeriod, 0 , MODE_SMA , PRICE_CLOSE , 0 ); //200 day Moving Average double MA5 = iMA ( NULL , 1440 , MAFastPeriod, 0 , MODE_SMA , PRICE_CLOSE , 0 ); // 5 day Moving Average double CurrentRSI = iRSI ( NULL , 1440 , RSIPeriod, PRICE_CLOSE , 0 ); // WHY DID YOU MAKE PrevRSI and LastRSI REMOVE IT IT IS NOT IN MY CODE if ( Bars < 100 ) { Print ( "bars less than 100" ); return ( 0 ); } if (AccountFreeMargin()<( 1000 *Lots)) { Print ( "We have no money. Free Margin = " , AccountFreeMargin()); return ( 0 ); } if ( OrdersTotal ()< 1 ) // WHY DID YOU REMOVE THIS { BUYS= 0 ; SELLS= 0 ; } Tjipke de Vries 2013.02.03 09:04 #33 28 cyxstudio 2013.01.31 18:36 deVries : Bu başlangıç..... Şu ana kadar sizinkinden farklı olanla ilgili ..... yorumunuzu yapın... Ardından https://www.mql5.com/en/forum/139654 adresinde bir okuma yapın ve kontrol işlemlerini geri sayan bir döngü oluşturmaya çalışın Gördüğünüz gibi, kontrol işlemlerini geri sayan bir döngü oluşturmamı istedim. Bu, kodun içindeki bir sonraki adımım Senden sadece kodun o kısmını istiyorum İşlemleri ayrı ayrı satın al ve esnafı sat Elit göstergeler :) "Bir ürün Market te İzleyen Duraklar ve İzleyen [Silindi] 2013.02.03 13:16 #34 deVries : Bu konuya 2. sayfaya bakarsanız size ne verdiğimi bulabilirsiniz. Kullanmayı bilmediğim için kaldırdım. Bana kodu kısmen verdin, nasıl çalıştığını göremedim. [Silindi] 2013.02.03 13:33 #35 -- [Silindi] 2013.02.03 13:42 #36 deVries : 28 cyxstudio 2013.01.31 18:36 deVries : Bu başlangıç..... Şu ana kadar sizinkinden farklı olanla ilgili ..... yorumunuzu yapın... Ardından https://www.mql5.com/en/forum/139654 adresinde bir okuma yapın ve kontrol işlemlerini geri sayan bir döngü oluşturmaya çalışın Gördüğünüz gibi, kontrol işlemlerini geri sayan bir döngü oluşturmamı istedim. Bu, kodun içindeki bir sonraki adımım Senden sadece kodun o kısmını istiyorum İşlemleri ayrı ayrı satın al ve esnafı sat bunun gibi? int bilet=OrderTicket(); çift lot=OrderLots(); for (int i = OrdersTotal() - 1; i >= 0; i--) { if (Sipariş Seçimi(i, SELECT_BY_POS)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { // yürütülecek kod blokları } } } Tjipke de Vries 2013.02.03 14:39 #37 cyxstudio : Kullanmayı bilmediğim için kaldırdım. Bana kodu kısmen verdin, nasıl çalıştığını göremedim. if ( OrdersTotal ()< 1 ) { BUYS= 0 ; SELLS= 0 ; } EA'nın yeniden başladığı an SATIN AL 1 olarak ayarlandı SATIŞ 1 olarak ayarlandı OrdersTotal(), hesabınızdaki tüm açık işlemlerin toplamını veriyor Sıfır olabilir, o zaman açık ticaretlerimiz var ve bu EA'nın alım satımı olup olmadığını kontrol etmemize gerek yok Sipariş Toplamı () > 0 ise ALIŞ 1 kalır ve SATIR 1 kalır bu durumda bizim EA'mızdan olup olmadığını kontrol etmemiz ve farklı türleri saymamız gerekiyor (satın al, sat, al limiti ....) böyle [ARŞİV!] Forumu kirletmemek için Forumu kirletmemek için herhangi [Arşivle!] Forumu kirletmemek için Tjipke de Vries 2013.02.03 14:46 #38 cyxstudio : bunun gibi? int bilet=OrderTicket(); çift lot=OrderLots(); for (int i = OrdersTotal() - 1; i >= 0; i--) { if (Sipariş Seçimi(i, SELECT_BY_POS)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { // yürütülecek kod blokları } } } SRC Düğmesini Kullan Bu döngü sadece başlıyoruz (hangi koşul için) Döngüde seçilen ticaretin alım veya satım olduğunu nasıl anlarsınız? Ve onları nasıl sayarsınız? [Silindi] 2013.02.03 14:56 #39 deVries : SRC Düğmesini Kullan Bu döngü sadece başlıyoruz (hangi koşul için) Döngüde seçilen ticaretin alım veya satım olduğunu nasıl anlarsınız? Ve onları nasıl sayarsınız? karşıt. if (OrderType() == OP_BUY && pBid > MA5) { Ticket3 = OrderClose(ticket, lots, pBid, Slippage.Pips); if (Ticket3 == true ) { Print("BUY position closed", OrderClosePrice()); } if (Ticket3 == false) { Print("Error closing BUY position", ErrorDescription(GetLastError())); } } if (OrderType() == OP_SELL && pBid < MA5) { Ticket4 = OrderClose(ticket, lots, pAsk, Slippage.Pips); if (Ticket4 == true ) { Print("SELL position closed", OrderClosePrice()); } if (Ticket4 == false) { Print("Error closing SELL position", ErrorDescription(GetLastError())); } } } kapalı ticaret fonksiyonu için . kullanarak if (OrderType() == OP_SELL && pBid < MA5) Alım ve satımı ayırt etmek için. sipariş açma koşullarımda yanlış bir şey var mı? if ( OrdersTotal () == 0 ) shud onu kaldırıp yakın sipariş işlevi için kullandığım döngü ile değiştireyim mi? Tjipke de Vries 2013.02.03 15:22 #40 cyxstudio : karşıt. kapalı ticaret fonksiyonu için. kullanarak Alım ve satımı ayırt etmek için. sipariş açma koşullarımda yanlış bir şey var mı? shud onu kaldırıp yakın sipariş işlevi için kullandığım döngü ile değiştireyim mi? Şu anda, halihazırda bir ticaret açık olup olmadığını kontrol etmelisiniz . bir ticaret açmadan önce bir ticaret açık olup olmadığını bilmek zorundasınız. hala esnafın sayımını yaptığınızı göremiyorum . Metatrader İstasyonunuzdaki Hareketli Ortalama EA koduna bir göz atın ve orada nasıl yapıldığını görün .... Yeni başlayanlardan sorular MQL5 Komisyoncu ; Piyasayı "sıfır [ARŞİV!] Forumu kirletmemek için 12345 Yeni yorum
bu benim son kodum. bana istediğim sonuçları vermemesi dışında yanlış bir şey düşünemiyorum
//+------------------------------------------------------------------+ //| RSI_strategy_cyxstudio.mq4 | //| Copyright 2013, Tjipke de Vries | //| https://forum.mql4.com/53695/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #include <stderror.mqh> #include <stdlib.mqh> extern int RSIPeriod = 2; //number of periods for RSI extern double UpperBound = 95; //set upper bound value for RSI extern double LowerBound = 5; //set lower bound value for RSI extern double Lots = 0.1; extern double StopLoss = 60; //Set the stop loss level extern double TakeProfit = 120; //Set the take profit level extern double TrailingStop = 40; //extra settings for OrderSend extern int MagicNumber = 54333; extern string CommentEA = "RSI strategy"; extern int Slippage.Pips = 3; //--- //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- Alert(OrdersTotal()); //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int Ticket1; int Ticket2; bool Ticket3; bool Ticket4; double SL,TP; int Total; double MagicNo; double Slippage; int cnt; double pAsk = MarketInfo(Symbol(), MODE_ASK); double pBid = MarketInfo(Symbol(), MODE_BID); double MA200 = iMA(NULL, 1440, 200, 0,MODE_SMA,PRICE_CLOSE, 0); //200 day Moving Average double MA5 = iMA(NULL, 1440, 5, 0,MODE_SMA,PRICE_CLOSE, 0); // 5 day Moving Average double CurrentRSI = iRSI (NULL, 0, RSIPeriod,PRICE_CLOSE ,0); double PrevRSI = iRSI (NULL, 0, RSIPeriod,PRICE_CLOSE ,1); double LastRSI = iRSI (NULL, 0, RSIPeriod,PRICE_CLOSE ,2); if(Bars<100) { Print("bars less than 100"); return(0); } if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } //Check for open orders if there are none then check for conditions to open one if (OrdersTotal() ==0 && LastRSI > PrevRSI && PrevRSI > CurrentRSI && CurrentRSI < LowerBound && pAsk > MA200) { //Condition to execute buy entry Ticket1 = OrderSend(Symbol(), OP_BUY, Lots, pAsk, Slippage.Pips, pBid - ( StopLoss * Point ), pAsk + ( TakeProfit * Point ), "Buy.", MagicNumber,0,Yellow); //execute buy order if(Ticket1>0) { if(OrderSelect(Ticket1,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } if (Ticket1 < 0) { Print("Error opening BUY order : ",GetLastError()); return(0); } if (OrdersTotal() ==0 && LastRSI < PrevRSI && PrevRSI < CurrentRSI && CurrentRSI > UpperBound && pBid < MA200) { //Condition to execute sell entry Ticket2 = OrderSend(Symbol(), OP_SELL, Lots, pBid, Slippage.Pips, pAsk + ( StopLoss * Point ), pBid - ( TakeProfit * Point ), "Sell.",MagicNumber, 0, Yellow) ; //execute sell order if(Ticket2>0) { if(OrderSelect(Ticket2,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } if (Ticket2<0) { Print("Error opening SELL order : ",GetLastError()); return(0); } } } int ticket=OrderTicket(); double lots=OrderLots(); for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { if (OrderType() == OP_BUY && pBid > MA5) { Ticket3 = OrderClose(ticket, lots, pBid, Slippage.Pips); if (Ticket3 == true ) { Print("BUY position closed", OrderClosePrice()); } if (Ticket3 == false) { Print("Error closing BUY position", ErrorDescription(GetLastError())); } } if (OrderType() == OP_SELL && pBid < MA5) { Ticket4 = OrderClose(ticket, lots, pAsk, Slippage.Pips); if (Ticket4 == true ) { Print("SELL position closed", OrderClosePrice()); } if (Ticket4 == false) { Print("Error closing SELL position", ErrorDescription(GetLastError())); } } } } } return(0); }Bu konuya 2. sayfaya bakarsanız size ne verdiğimi bulabilirsiniz.
Bu başlangıç.....
Şu ana kadar sizinkinden farklı olanla ilgili ..... yorumunuzu yapın...
Ardından https://www.mql5.com/en/forum/139654 adresinde bir okuma yapın ve kontrol işlemlerini geri sayan bir döngü oluşturmaya çalışın
Gördüğünüz gibi, kontrol işlemlerini geri sayan bir döngü oluşturmamı istedim.
Bu, kodun içindeki bir sonraki adımım
Senden sadece kodun o kısmını istiyorum
İşlemleri ayrı ayrı satın al ve esnafı sat
Bu konuya 2. sayfaya bakarsanız size ne verdiğimi bulabilirsiniz.
Kullanmayı bilmediğim için kaldırdım. Bana kodu kısmen verdin, nasıl çalıştığını göremedim.
--
Bu başlangıç.....
Şu ana kadar sizinkinden farklı olanla ilgili ..... yorumunuzu yapın...
Ardından https://www.mql5.com/en/forum/139654 adresinde bir okuma yapın ve kontrol işlemlerini geri sayan bir döngü oluşturmaya çalışın
Gördüğünüz gibi, kontrol işlemlerini geri sayan bir döngü oluşturmamı istedim.
Bu, kodun içindeki bir sonraki adımım
Senden sadece kodun o kısmını istiyorum
İşlemleri ayrı ayrı satın al ve esnafı sat
bunun gibi?
int bilet=OrderTicket();// yürütülecek kod blokları
}
Kullanmayı bilmediğim için kaldırdım. Bana kodu kısmen verdin, nasıl çalıştığını göremedim.
EA'nın yeniden başladığı an
SATIN AL 1 olarak ayarlandı
SATIŞ 1 olarak ayarlandı
OrdersTotal(), hesabınızdaki tüm açık işlemlerin toplamını veriyor
Sıfır olabilir, o zaman açık ticaretlerimiz var ve bu EA'nın alım satımı olup olmadığını kontrol etmemize gerek yok
Sipariş Toplamı () > 0 ise ALIŞ 1 kalır ve SATIR 1 kalır
bu durumda bizim EA'mızdan olup olmadığını kontrol etmemiz ve farklı türleri saymamız gerekiyor (satın al, sat, al limiti ....)
böyle
bunun gibi?
int bilet=OrderTicket();// yürütülecek kod blokları
}
SRC Düğmesini Kullan
Bu döngü sadece başlıyoruz (hangi koşul için)
Döngüde seçilen ticaretin alım veya satım olduğunu nasıl anlarsınız?
Ve onları nasıl sayarsınız?
SRC Düğmesini Kullan
Bu döngü sadece başlıyoruz (hangi koşul için)
Döngüde seçilen ticaretin alım veya satım olduğunu nasıl anlarsınız?
Ve onları nasıl sayarsınız?
karşıt.
if (OrderType() == OP_BUY && pBid > MA5) { Ticket3 = OrderClose(ticket, lots, pBid, Slippage.Pips); if (Ticket3 == true ) { Print("BUY position closed", OrderClosePrice()); } if (Ticket3 == false) { Print("Error closing BUY position", ErrorDescription(GetLastError())); } } if (OrderType() == OP_SELL && pBid < MA5) { Ticket4 = OrderClose(ticket, lots, pAsk, Slippage.Pips); if (Ticket4 == true ) { Print("SELL position closed", OrderClosePrice()); } if (Ticket4 == false) { Print("Error closing SELL position", ErrorDescription(GetLastError())); } } }kapalı ticaret fonksiyonu için .
kullanarak
if (OrderType() == OP_SELL && pBid < MA5)Alım ve satımı ayırt etmek için.
sipariş açma koşullarımda yanlış bir şey var mı?
shud onu kaldırıp yakın sipariş işlevi için kullandığım döngü ile değiştireyim mi?
karşıt.
kapalı ticaret fonksiyonu için.
kullanarak
Alım ve satımı ayırt etmek için.
sipariş açma koşullarımda yanlış bir şey var mı?
shud onu kaldırıp yakın sipariş işlevi için kullandığım döngü ile değiştireyim mi?
Şu anda, halihazırda bir ticaret açık olup olmadığını kontrol etmelisiniz .
bir ticaret açmadan önce bir ticaret açık olup olmadığını bilmek zorundasınız.
hala esnafın sayımını yaptığınızı göremiyorum
.
Metatrader İstasyonunuzdaki Hareketli Ortalama EA koduna bir göz atın ve orada nasıl yapıldığını görün ....