النتائج 2,596 إلى 2,610 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 11-08-2012, 02:25 AM #2596
رد:موضوع مخصص للأسئلة البرمجية
قمت بتعديل الشروط ولكن مازالت المشكلة موجودة ، على كل حال انا استخدمت الدالة التى تعود بسعر إغلاق الشمعة السابقة
كود PHP:double ClosePrice(){
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
int bar=iBarShift(Symbol(),0,OrderOpenTime(),false); // To Find current OrderOpenTime for Bar[0] then get closeprice to the previous Bar
double ClosePrice=Close[bar+1];
}
}
return(ClosePrice);
}
- 11-08-2012, 02:28 AM #2597
السلام عليكم اخواني هل يمكن عمل باك تست
لاكسبرت يعمل علي مؤشر مربوط باكثر من عملة في نفس الوقت
شكرا لكم
- 11-08-2012, 05:35 AM #2598
- 11-08-2012, 06:01 AM #2599
- 11-08-2012, 09:37 AM #2600
رد:موضوع مخصص للأسئلة البرمجية
الكود
كود PHP://+------------------------------------------------------------------+
//| |
//| |
//| www.arabictrader.com/vb |
//| |
//| [email protected] |
//+------------------------------------------------------------------+
#property copyright "MR.dollarEA"
#property link "[email protected]"
extern bool UseTimeFilter = false;
extern int StartHour = 7;
extern int EndHour = 17;
extern string MM_Parameters = "---------- Money Management";
extern int MaxTrades = 1;
extern double Lots = 0.10;
extern string Ich=" Ichimoku Settings";
extern int tenkansen=9;
extern int kijunsen=26;
extern int senkospan=52;
extern int shift=1;
extern int shift2=26;
extern int Ichimoku_TIME_FRAME=240;
extern string S5="Order Management";
extern int BreakEven=0;
extern int movestopto=1;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int TrailingStop=0;
extern int TrailingStep=0;
double point;
int digits;
double FirstLot;
extern int MagicNumber=2533;
int init()
{
FirstLot=Lots;
if(Digits<4)
{
point=0.01;
digits=2;
}
else
{
point=0.0001;
digits=4;
}
return(0);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS deinitialization function |
//+------------------------------------------------------------------+
void deinit() {
Comment("");
}
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS Start function |
//+------------------------------------------------------------------+
int start()
{
Comment("Programmed by MR.dollar"+"\n"+"منتدى المتداول العربي"+"\n"+"www.arabictrader.com/vb");
if (UseTimeFilter){
if(!((StartHour < EndHour && TimeHour(TimeCurrent()) >= StartHour && TimeHour(TimeCurrent()) < EndHour) || (StartHour > EndHour && TimeHour(TimeCurrent()) >= StartHour ||
TimeHour(TimeCurrent()) < EndHour))){
Comment("Non-Trading Hours!");
return(0);
}
}
//|---------trailing stop
if(TrailingStop>0)MoveTrailingStop();
if(BreakEven>0)MoveBreakEven();
//////////////////////////////////////////////////
double Tenkan=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_TENKANSEN,shift);
double Kijun=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_KIJUNSEN,shift);
double Senkou=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_CHINKOUSPAN,1+kijunsen);
double Senkoua=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANA,shift);
double Senkouaplus=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANA,shift+27);
double Senkoub=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANB,shift);
double Senkoubplus=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANB,shift+27);
double Ichimoku_B=iCustom(Symbol(),0,"Ichimoku Trend Magic Histogram with Alert",1,shift);
double Ichimoku_S=iCustom(Symbol(),0,"Ichimoku Trend Magic Histogram with Alert",0,shift);
double Ichimoku_BF=iCustom(Symbol(),0,"Ichimoku Bars Filter",0,shift);
double Ichimoku_SF=iCustom(Symbol(),0,"Ichimoku Bars Filter",1,shift);
double IchimoAA=iIchimoku(NULL,Ichimoku_TIME_FRAME,9,26,52,MODE_SENKOUSPANA,shift);
double IchimoBB=iIchimoku(NULL,Ichimoku_TIME_FRAME,9,26,52,MODE_SENKOUSPANB,shift);
////////////////////////////////////////////////////
double SL,TP;
////////////////////////////////
if((Open[1]>Tenkan)&&(Close[1]>Tenkan)&&(Tenkan>=Kijun)&&(Close[1]>Senkoub)&&(Close[1]>Senkoua)&&(Ichimoku_B==3)&&
(Senkou>Senkoubplus&&Senkou>Senkouaplus)&&(Ichimoku_BF>0)&&(Close[1]>IchimoAA)&&(Close[1]>IchimoBB))
{
if(orderstotal()<MaxTrades){
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
if(WinorLoss()==false)Lots=lastlot()*2;
else Lots=FirstLot;
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
}
}
/////////////////////
if ((Open[1]<Tenkan)&&(Close[1]<Tenkan)&&(Tenkan<=Kijun)&&(Close[1]<Senkoua)&&(Close[1]<Senkoub)&&(Ichimoku_S==3)&&
(Senkou<Senkoubplus&&Senkou<Senkouaplus)&&(Ichimoku_SF>0)&&(Close[1]<IchimoAA)&&(Close[1]<IchimoBB))
{
if(orderstotal()<MaxTrades){
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
if(WinorLoss()==false)Lots=lastlot()*2;
else Lots=FirstLot;
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
}
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
// Limiting Orders
//+------------------------------------------------------------------+
// OrdersHistoryTotal -- MODE_HISTORY -- Closed Orders //
// OrdersTotal -- MODE_TRADES -- Opend Orders //
//+------------------------------------------------------------------+
// lastlot & WinorLoss Functions //
double lastlot(){
for(int i=0;i<OrdersHistoryTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
double lotsnumber=OrderLots();
}
}
return(lotsnumber);
}
bool WinorLoss(){
bool win=true;
for(int i=0;i<OrdersHistoryTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
if(OrderProfit()>0){
win=true;
}
else{
win=false;
}
}
}
return(win);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS TrailingStop |
//+------------------------------------------------------------------+
//|---------trailing stop
void MoveTrailingStop()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
void MoveBreakEven()
{
int cnt,total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(BreakEven>0)
{
if(NormalizeDouble((Bid-OrderOpenPrice()),digits)>BreakEven*point)
{
if(NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),digits)<0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+movestopto*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
}
else
{
if(BreakEven>0)
{
if(NormalizeDouble((OrderOpenPrice()-Ask),digits)>BreakEven*point)
{
if(NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),digits)<0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-movestopto*point,digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
}
- 11-08-2012, 04:12 PM #2601
- 11-08-2012, 06:57 PM #2602
رد:موضوع مخصص للأسئلة البرمجية
استاذ اسامة ، انا قمت بعمل اكسيبرت للمؤشر المرفق ، والشروط صحيحة لفتح الصفقات فـ الباك تست ، ولكن الغريب ان إشارة المؤشر تظهر مرة واحدة عند بداية الباك تست ولاتظهر بعد ذلك على الشارت اثناء عمل الاكسيبرت !!
- 12-08-2012, 02:13 AM #2603
- 12-08-2012, 05:15 AM #2604
السلام عليكم ورحمة الله اخواني الكرام من فضلكم اريد معادلة الاغلاق الشمعه الحالية في البرمجة لاكن لاكثر من عملة
يعني مثلا
double close=Close[0];
لاكن هنا سوف يقوم الاكسبرت بتجهيز واستخدام الشمعه الاخيرة لنفس العملة الي نعمل عليها لاكن
انا اريد اغلاق اكثر من عملة باي شكل تكون المعادلة ؟ وشكرا لكم
- 12-08-2012, 07:01 AM #2605
- 12-08-2012, 09:29 PM #2606
السلام عليكم ورحمة الله اخواني الكرام من فضلكم اريد معادلة الاغلاق الشمعه الحالية في البرمجة لاكن لاكثر من عملة
يعني مثلا
double close=Close[0];
لاكن هنا سوف يقوم الاكسبرت بتجهيز واستخدام الشمعه الاخيرة لنفس العملة الي نعمل عليها لاكن
انا اريد اغلاق اكثر من عملة باي شكل تكون المعادلة ؟ وشكرا لكم
- 13-08-2012, 03:08 AM #2607
- 13-08-2012, 04:06 AM #2608
رد:موضوع مخصص للأسئلة البرمجية
كان الأفضل يا أخي إنك ترفق الكود وإحنا نعدل لك عليه
نفس الشرح إللي فوق ده ممكن تستخدمه بس هتغير بس هنزود دالة لمعرفة أخر تيك بروفت وهنغير في الأكواد إللي في دالة start()
دالة لمعرفة أخر تيك بروفت
كود PHP:double GetlastTP(int type)
{
for (int i=OrdersTotal();i>0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==type)
{
return(OrderTakeProfit());
}
}
return(0);
}
كود PHP:if(orderstotal(OP_BUY)>1 && orderstotal(OP_BUY)<3){ModifyTP(OP_BUY);}
if(orderstotal(OP_BUY)>=3){
for (int i=OrdersTotal();i>0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderTakeProfit()!=GetlastTP(OP_BUY) && OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==OP_BUY){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),GetlastTP(OP_BUY),0);
}
}
if(orderstotal(OP_SELL)>1 && orderstotal(OP_SELL)<3){ModifyTP(OP_SELL);}
if(orderstotal(OP_SELL)>=3){
for (int i=OrdersTotal();i>0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderTakeProfit()!=GetlastTP(OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==OP_SELL){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),GetlastTP(OP_SELL),0);
}
}
آخر تعديل بواسطة xcv114 ، 13-08-2012 الساعة 04:29 AM
- 13-08-2012, 04:46 AM #2609
- 13-08-2012, 10:45 PM #2610
السبب ليس في الكود لكن في الحساب نفسه
إذا كان الحساب يسمح بفتح عقود مايكرو فسوف يعمل الإكسبرت وإذا كان أقل حجم لوت مسموح هو عقود ميني فلن يفتح الإكسبرت صفقات إذا كان حجم اللوت مثلا 0.05
أيضا يمكنك إضافة شرط بحيث تستطيع معرفة حجم أقل لوت مسموح في الإكسبرت
كود PHP:int Lot_Digits;
if(MarketInfo(Symbol(),MODE_MINLOT)<0.1)Lot_Digits=2;
else Lot_Digits=1;
كود PHP:if(WinorLoss()==false)Lots=NormalizeDouble(lastlot()*2,Lot_Digits);
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM