ما اضن انك فهمت سؤالي ياغالي
Printable View
برمجت ذه لكن مايعمل ارجو المساعده
كود PHP:int TrailingOrdersBuyTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && OrderType()==OP_BUY)
{
if((Ask-OrderOpenPrice())> (OrderOpenPrice()- OrderStopLoss()) && (OrderOpenPrice()- OrderStopLoss())>0 )
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask-(OrderOpenPrice()- OrderStopLoss()),digits),OrderTakeProfit(),0,Red);
}
c++;
}
}
return(c);
}
int TrailingOrdersSellTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && OrderType()==OP_SELL)
{
if((OrderOpenPrice()- Bid)> ( OrderStopLoss()-OrderOpenPrice()) && (OrderStopLoss()-OrderOpenPrice())>0 )
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-(OrderStopLoss()-OrderOpenPrice()),digits),OrderTakeProfit(),0,Red);
}
c++;
}
}
return(c);
}
بارك لله فيك اخي اسامة شوف هل عندي كل شي صحيح
كود PHP://+------------------------------------------------------------------+
//| DD_RABAhhh.mq4 |
//| Copyright 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int K_Period=5;
extern int D_Period=3;
extern int Slowing=3;
extern int StopLoss=6;
extern int TakeProfit=10;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (iStochastic(NULL,PERIOD_M5,5,3,3,0,0,0,1)<20 && iStochastic("EURUSD",PERIOD_M5,5,3,3,0,0,0,2)>20 && OrdersTotal()==0)
double SL,TP;
if(StopLoss >0){SL=Ask-StopLoss *Point;}else {SL=0;}
if(TakeProfit >0){TP=Ask+TakeProfit *Point;}else {TP=0;}
if(StopLoss >0){SL=Bid-StopLoss *Point;}else {SL=0;}
if(TakeProfit >0){TP=Bid+TakeProfit *Point;}else {TP=0;}
OrderSend(Symbol(),OP_BUY,0.01,Ask,30,SL,TP,"",15000,0,Green);
if (iStochastic(NULL,PERIOD_M5,5,3,3,0,0,0,1)>80 && iStochastic("EURUSD",PERIOD_M5,5,3,3,0,0,0,2)<80 && OrdersTotal()==0)
OrderSend(Symbol(),OP_SELL,0.01,Bid,30,SL,TP,"",15000,0,Red);
//----
return(0);
}
//+------------------------------------------------------------------+
بارك لله فيك اخي اسامة شوف هل عندي كل شي صحيح
كود PHP://+------------------------------------------------------------------+
//| DD_RABAhhh.mq4 |
//| Copyright 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int K_Period=5;
extern int D_Period=3;
extern int Slowing=3;
extern int StopLoss=6;
extern int TakeProfit=10;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (iStochastic(NULL,PERIOD_M5,5,3,3,0,0,0,1)<20 && iStochastic("EURUSD",PERIOD_M5,5,3,3,0,0,0,2)>20 && OrdersTotal()==0)
double SL,TP;
if(StopLoss >0){SL=Ask-StopLoss *Point;}else {SL=0;}
if(TakeProfit >0){TP=Ask+TakeProfit *Point;}else {TP=0;}
if(StopLoss >0){SL=Bid-StopLoss *Point;}else {SL=0;}
if(TakeProfit >0){TP=Bid+TakeProfit *Point;}else {TP=0;}
OrderSend(Symbol(),OP_BUY,0.01,Ask,30,SL,TP,"",15000,0,Green);
if (iStochastic(NULL,PERIOD_M5,5,3,3,0,0,0,1)>80 && iStochastic("EURUSD",PERIOD_M5,5,3,3,0,0,0,2)<80 && OrdersTotal()==0)
OrderSend(Symbol(),OP_SELL,0.01,Bid,30,SL,TP,"",15000,0,Red);
//----
return(0);
}
//+------------------------------------------------------------------+
قم بوضع أقواس بعض كتابة الشرط حتى يعتبر كل الكود الخاصة بحساب الأستوب لوز والهدف وفتح الصفقه من جسد الشرط
ثانيا سوف تضع شروط الأستوب لوز والهدف الخاصة بأمر البيع قبل فتح صفقه البيع والخاص بأمر الشراء قبل فتح صفقه الشراء
كود PHP:
if (iStochastic(NULL,PERIOD_M5,5,3,3,0,0,0,1)<20 && iStochastic("EURUSD",PERIOD_M5,5,3,3,0,0,0,2)>20 && OrdersTotal()==0)
{
double SL,TP;
if(StopLoss >0){SL=Ask-StopLoss *Point;}else {SL=0;}
if(TakeProfit >0){TP=Ask+TakeProfit *Point;}else {TP=0;}
OrderSend(Symbol(),OP_BUY,0.01,Ask,30,SL,TP,"",15000,0,Green);
}
if (iStochastic(NULL,PERIOD_M5,5,3,3,0,0,0,1)>80 && iStochastic("EURUSD",PERIOD_M5,5,3,3,0,0,0,2)<80 && OrdersTotal()==0)
{
if(StopLoss >0){SL=Bid+StopLoss *Point;}else {SL=0;}
if(TakeProfit >0){TP=Bid-TakeProfit *Point;}else {TP=0;}
OrderSend(Symbol(),OP_SELL,0.01,Bid,30,SL,TP,"",15000,0,Red);
}
ممكن كود الريسك ريشو: اللي هو إغلاق جميع الصفقات المفتوحة اذا وصلت لنسبة خسارة معينة من الحساب .
سوف تقوم بعمل دالة لإغلاق الصفقات أولا
ثم سوف تكون شروط الإغلاقكود PHP:void CloseAllOrders()
{
for (int cnt = 0 ; cnt <=OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3*D);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3*D);
}
}
}
}
ومتغيرات الإكسبرت الخارجيهكود PHP:if(AccountProfit()/AccountBalance())*100<=LossPercent&&CloseAfterLossPercent==true){
CloseAllOrders();
}
كود PHP:extern bool CloseAfterLossPercent=false;
extern int LossPercent=-50;
السلام عليكم اخ اسامه.
1-ايش عندك من اكواد او طرق لاداره راس المال غير هذا الكود؟
2-كيف سيكون التعديل على الكود بانه اذا وصل الربح مثلا الى 100000 يعود عمل الكود من جديد على اساس ان الهامش المتاح هو 10000 لكن في الحقيقه هو 100000 مائه الفكود:double LotManage()
{
double lot = MathCeil(AccountFreeMargin() * RiskPercent / 1000) / 100;
if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
return (lot);
}
او
بإن يضاعف حجم اللوت حسب الهامش المتاح الى ان يصل الى حجم معين من اللوت ثم لايضاعف حجم اللوت مهما يكن الهامش المتاح انما يعود من جديد؟
3-لاحظت كلمه lot داخل الكود ولكن في الشرط او الاعدادت الخارجيه مكتوب lots وليس lot فهل هذا خطاء او لا ..يمكن الاطلاع على الكود في المشاركه السابقه؟
https://forum.arabictrader.com/t37612-191.html
بالنسبه لي فأنا أستخدم هذا الكود أو أستخدم حساب حجم اللوت بناء على الاستوب لوز بحيث عند خسارة الصفقه تكون حجم الخساره من رأس المال تساوي النسبة المحدده في المخاطره
إذا أردت عند الوصول إلى حجم لوت معين كلما زاد الرصيد لا يزيد حجم اللوت سوف تضيف شرط اقصى حجم لوت محدد
مثال
والمتغير Max_Lot هو أقصى حجم لوت تقوم بتحديدهكود PHP:double LotManage()
{
double lot = MathCeil(AccountFreeMargin() * RiskPercent / 1000) / 100;
if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
return (MathMin(lot,Max_Lot));
}
بالنسبه للكود فلا يوجد فيه خطأ المتغير lot هو متغير محلي فائدته حفظ قيمة نتائج العمليه الحسابيه ثم تعود الداله بقيمة هذا المتغير
ثم بعد ذلك إذا أردت إستدعاء الداله فسوف تكون قيمة حجم اللوت
أو حسب متغير حجم اللوت الذي تستخدمهكود PHP:Lots=LotManage();
مثال
والأستوب لوز هو عدد نقاط الأستوب لوز للصفقهكود PHP:double LotManage(int stoploss)
{
double percent = (AccountBalance() * RiskPercent) /100;
double lot;
if(MarketInfo(Symbol(),MODE_LOTSIZE)==100000)lot=(percent/stoploss)/10;
if(MarketInfo(Symbol(),MODE_LOTSIZE)==10000)lot=(percent/stoploss)/1;
if(MarketInfo(Symbol(),MODE_LOTSIZE)==1000)lot=(percent/stoploss)/0.1;
if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
return (lot);
}