وعليكم السلام ورحمة الله وبركاتهاقتباس:
السلام عليكم ارجو تبيين اين الخطا في الاكودفكره الاكسبيرت انه يزيد عقد عند الخساره وينقص عقدين عند الربح زالمشكله تاتي عند حدوث صفقتين متتاليه ناجحه فهو ينقص المضاعفه بعد الاولى تمام ولكن ان نجحت الثانيه فهو ييستمر في زيادتها والمفروض ان ينقصها الكود وصوره من الهيستوري
كود PHP:extern bool UseTimeFilter = false;
extern int StartHour = 7;
extern int EndHour = 17;
extern int max=1;
extern string S3=" RSI1 Settings";
extern bool usersi1filter=false;
extern int timeframe1=0;
extern int RSIPeriod1=14;
extern int rsi1buyup=70;
extern int rsi1buydown=30;
extern int rsi1sellup=70;
extern int rsi1selldown=30;
extern int candl1=0;
extern string S1=" Multiplier Settings";
extern bool UseMultiplier=false;
extern double Multiplier=0.9;
extern double MinLot=0;
extern double num=0.01;
extern string MM_Parameters = " Money Management";
extern bool UseMoneyManagement = false;
extern int RiskPercent = 10;
extern double Lots=1;
extern string S5875="normal tp-sl";
extern int StopLoss=0;
extern int TakeProfit=50;
extern int Slippage=3;
extern int MagicNumber=09876;
datetime Time0;
double point;int Q;
int digits;
int Lot_Digits;
double LastLot;
double FirstLot;
int init()
{
FirstLot=Lots;
if(MarketInfo(Symbol(),MODE_MINLOT)<0.1)Lot_Digits=2;
else Lot_Digits=1;
if(Digits==5||Digits==3)
Q=10;
else Q=1;
if(Digits<4)
{
point=0.01;digits=2;
}
else
{
point=0.0001;digits=4;
}
return(0);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS deinitialization function |
//+------------------------------------------------------------------+
void deinit() {
Comment("");
}
int orderscnt(int type){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderType()==type){
cnt++;
}
}
}
return(cnt);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS Start function |
//+------------------------------------------------------------------+
int start()
{
Comment("Programmed by MR.dollar"+"\n"+"Idea Created By ÕÏÇã"+"\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);
}
}
//////////////////////////////////////////////////
double rsi1=iRSI(NULL,timeframe1,RSIPeriod1,PRICE_CLOSE,candl1);
////////////////////////////////////////////////////
double SL,TP;
if(UseMoneyManagement) Lots = LotManage();
////////////////////////////////
if (((rsi1>rsi1buyup||!usersi1filter)||(rsi1<rsi1buydown||!usersi1filter))&&
Time0!=Time[0] ){
if(LastOrderType()!=0) {
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;}
if(UseMultiplier&&!LP())Lots=LastLot1()+Multiplier;
OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),3*Q,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
Time0=Time[0];
Lots=LastLot1()-num;
}
}
/////////////////////
if (((rsi1>rsi1sellup||!usersi1filter)||(rsi1<rsi1selldown||!usersi1filter))&&(LastOrderType()!=1)&&
Time0!=Time[0] ){
if(LastOrderType()!=1) {
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
if(UseMultiplier&&!LP())Lots=LastLot1()+Multiplier;
OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,digits),3*Q,SL,TP,"MR.dollar EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
Time0=Time[0];
Lots=LastLot1()-num;
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS Money Managment |
//+------------------------------------------------------------------+
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);
}
//+---------------------------------------------------------------------------------+
bool LP(){
for(int i=OrdersHistoryTotal();i>0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
if(OrderProfit()>=0)return(true);
else return(false);
}
}
return(true);
}
double LastLot1(){
double L;
for(int i=0;i<OrdersHistoryTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
L=OrderLots();
}
}
return(L);
}
int LastOrderType()
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
return(OrderType());
}
return(-1);
}
إستخدم نفس الشرط الذي إستخدمته عند المضاعفه
كود PHP:if(UseMultiplier){
if(!LP())Lots=LastLot1()+Multiplier;
else Lots=LastLot1()-num;
}

