النتائج 1 إلى 15 من 30
- 13-02-2015, 07:12 AM #1
طلب اكسبرت فتح صفقه مباشره ووضع اوامر معلقه يتم فتحها بالترتيب
السلام عليكم
اتمنى منكم عمل هذا الاكسبرت كالتالي
الاكسبرت يحتوي على
1- صفقه مباشره يتم فتحها بسعر السوق بمجرد تشغيل الاكسبرت
2- مجموعه من الاوامر المعلقه ولتكن order1,order2,order3,order4 وهكذا حتى order15 مثلا
بحيث تكون كلا من الصفقه المباشره ومجموعه الاوامر يتم تحديد الاتي يدويا ومسبقا في اعدادات الاكسبرت قبل تشغيله
النوع ( بيع او شراء )
الهدف ( بالنقاط وبتحديد سعر معا )
الاستوب لوز ( بالهدف وبتحديد السعر معا )
حجم العقد ( 0.01 او 2.34 ) مثلا
عند وصول المكسب بالدولار لرقم معين ( يتم تحديده باعدادات الاكسبرت يدويا ومسبقا ) يقوم الاكسبرت باغلاق كل الصفقات المفتوحه والمعلقه
اهم شئ انه لا يتم فتح الامر المعلق order2 الا اذا كان ال order1 مفعلا قبله بالفعل
اي ان الاوردرات يتم تفعيلها بالترتيب
مثلا اذا تم تفعيل الامر المعلق order1 بعد وصول السعر له , يتم فتح الامر المعلق order2 حتى يكون بانتظار التفعيل ( ويكون هذا الامر على البروكر اي غير مخفي عن البروكر )
اي انه يكون هناك امر واحد فقط مفتوح على البروكر
ولكم جزيل الشكر
- 13-02-2015, 02:15 PM #2
اخي لقد طرحت اكسبيرت من انتاجي امس يمكن ان تجربته
لكنه يعلق اوامر بالعدد الذي تحدده
ويقوم باغلاق كافة الأوامر بمجرد تحقيق اخر صفقة الربح وهذا اختياري
جربه واذا اردت تعديل يمكن التعديل
https://forum.arabictrader.com/t216438.html
- 14-02-2015, 03:50 AM #3
- 14-02-2015, 04:34 PM #4
ارجوا معذرتكم فانا احاول من شهور ان يستجيب لطلبى ورجائى احد المبرمجيين لاكن من الواضح انشغالهم جميعا لذا ارجوا المعذره فى طرح طلبى هنا فطلبى قريب جدا من الطلب الخاص بهذا الموضوع فهو اكسبريت اوامر معلقه ايضا بمواصفات بسيطه وعاديه دون مضاعفات او اى خصائص اخرى وهو كما يلى
اكسبريت اوامر معلقه
مواصفات الاكسبريت المطلوبه
1-امكانيه فتح صفقه بيع او شراء ماركت بمجرد تفعيل الاكسبريت
2-تحديد حجم اللوت والربح ووقف الخساره لاوامر الماركت
3- امكانيه وضع اوامر شراء ستوب
a- تحديد حجم اللوت لاوامر الشراء
b-تحديد المسافه بين الاوامر
c- تحديد الارباح
d-تحديد وقف الخسائر
e-تحديد المسافه بين اول امر وسعر السوق
f-تحديد عدد الاوامر المعلقه للشراء ستوب
امكانيه وضع اوامر شراء ليمت4
a-تحديد حجم اللوت لاوامر الشراء
b-تحديد المسافه بين الاوامر
c- تحديد الارباح
d-تحديد وقف الخسائر
e-تحديد المسافه بين اول امر وسعر السوق
f-تحديد عدد الاوامر المعلقه للشراء ليمت
5- امكانيه وضع اوامر بيع ستوب وبيع ليمت بجميع الخيارات السابقه تماما
6-تكرار وضع اى امر يتم وصوله الى هدفه واغلاقه على ربح ا
7- ضمان استمراريه
عمل الاكسبريت دون توقف على الاطلاق وذلك بالحفاظ دائما على اعداد الاوامر المعلقه اعلى واسفل السعر ثابت كما يتم تحدديدها عند بدايه تشغيل الاكسبريت
8- صدور تنبيه صوتى فقط عند اغلاق اى امر على ربح
وممكن الاستعانه بهذا الاكسبريت فهو يقوم بكل المتطلبات ما عدا اوامر الماركت واستمراريه عمل الاكسبريت واذا كان الامر متعب لكم فلنكتفى باضافه اوامر الماركت فقط او كما يتيسر لكم والف شكر واعتذر مره اخرى
extern bool UseHourTrade = false;
extern int FromHourTrade = 7;
extern int ToHourTrade = 17;
extern bool OpenHedgeFirstTime=false;
extern double HedgeLots=0.1;
extern int HedgeTP=0;
extern int HedgeSL=0;
extern bool AddOrdersAfterClose=true;
extern bool ReverseClosedOrders=false;
extern bool CloseIfLastOrderProfit=false;
extern string S1="BuyStop Orders Settings ";
extern bool OpenBuyStopOrders=true;
extern int NumberOfBuyStopOrders=50;
extern double BuyStopFirstLot=0.1;
extern int DistanceFromCurrentPriceBS=0;
extern int DistanceBetweenBuyS=20;
extern int Distance_AddBuyS=0;
extern int BuyStopTakeProfit=0;
extern int BuyStopSL=0;
extern string S2="BuyLimit Orders Settings";
extern bool OpenBuyLimitOrders=true;
extern int NumberOfBuyLimitOrders=50;
extern double BuyLimitFirstLot=0.1;
extern int DistanceFromCurrentPriceBL=0;
extern int DistanceBetweenBuyL=20;
extern int Distance_AddBuyL=0;
extern int BuyLimitTakeProfit=0;
extern int BuyLimitSL=0;
extern string S3="SellStop Orders Settings";
extern bool OpenSellStopOrders=true;
extern int NumberOfSellStopOrders=50;
extern double SellStopFirstLot=0.1;
extern int DistanceFromCurrentPriceSS=0;
extern int DistanceBetweenSellS=20;
extern int Distance_AddSellS=0;
extern int SellStopTakeProfit=0;
extern int SellStopSL=0;
extern string S4="SellLimit Orders Settings";
extern bool OpenSellLimitOrders=true;
extern int NumberOfSellLimitOrders=50;
extern double SellLimitFirstLot=0.1;
extern int DistanceFromCurrentPriceSL=0;
extern int DistanceBetweenSellL=20;
extern int Distance_AddSellL=0;
extern int SellLimitTakeProfit=0;
extern int SellLimitSL=0;
extern string S5=" Lots Multiplier ";
extern bool UseMultiplier=true;
extern bool X_Multiplier=true;
extern double Multiplier=2;
extern string S6=" Order Open Time/Price Settings ";
extern bool HighLowCandle=false;
extern bool OpenAtChoosenHour=false;
extern int Hour_=12;
extern double StartPrice=0;
extern int Gap=3;
extern bool OnlyOnce=false;
extern string S7=" Close and Delete Orders ";
extern bool FridayOpenOrdersFilter=true;
extern bool FridayDeleteOrders=false;
extern bool FridayCloseOrders=false;
extern int _Hour=20;
extern bool CloseAfterPassMinutes=false;
extern int MinutesPass=100;
extern bool CloseOrdersAfterProfit=true;
extern bool DeleteOrdersAfterProfit=true;
extern int Profit=200;
extern bool CloseOrdersAfterLoss=false;
extern double Loss=-200;
extern string S8=" Order Management";
extern int TrailingStop=0;
extern int TrailingProfit=0;
extern int TrailingStep=0;
extern string S9="Time Filter";
extern bool FridayCloseEA=false;
extern int Friday_CloseHour=20;
bool enter;
double point;double Price;
int digits;int i,Q,Qq;
extern int MagicNumber=2533;
int init()
{
if(OpenBuyStopOrders&&OpenBuyLimitOrders){Q=Number OfBuyLimitOrders+NumberOfBuyStopOrders;}
else if((OpenBuyStopOrders==false&&OpenBuyLimitOrders)) {Q=NumberOfBuyLimitOrders;}
else if((OpenBuyStopOrders&&OpenBuyLimitOrders==false)) {Q=NumberOfBuyStopOrders;}
else{Q=0;}
if(OpenSellStopOrders&&OpenSellLimitOrders){Qq=Num berOfSellLimitOrders+NumberOfSellStopOrders;}
else if((OpenSellStopOrders&&OpenSellLimitOrders==false )){Qq=NumberOfSellStopOrders;}
else if((OpenSellStopOrders==false&&OpenSellLimitOrders )){Qq=NumberOfSellLimitOrders;}
else{Qq=0;}
enter=true;
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 cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber){
cnt++;
}
}
}
return(cnt);
}
int ordersPen(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()>OP_SE LL){
cnt++;
}
}
}
return(cnt);
}
int orders(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()<=OP_S ELL){
cnt++;
}
}
}
return(cnt);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS Start function |
//+------------------------------------------------------------------+
int start()
{
Comment("Programmed by MR.dollar"+"\n"+"منتدى المتداول العربي"+"\n"+"www.arabictrader.com/vb"+"\n"+
"Number Of Pending Orders = "+ordersPen()+"\n"+"Number Of Market Orders = "+orders()+"\n"+
"Account Free Margin = "+DoubleToStr(AccountFreeMargin(),2)+"\n"+"Pro fit Value = "+DoubleToStr(AccountProfit(),2));
bool ss=true;
if(Qq+Q==orderscnt()&&!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
TimeHour(TimeCurrent()) < ToHourTrade))&&UseHourTrade){
DeletePendingOrders();
}
if (UseHourTrade){
if(!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
TimeHour(TimeCurrent()) < ToHourTrade))){
Comment("Non-Trading Hours!");
ss=false;
}
}
if(TrailingStop>0)MoveTrailingStop();
if(FridayCloseEA&&Hour()>=Friday_CloseHour&&DayOfW eek()==5)
return;
/////////////////////////add orders again//////////////////
if(AddOrdersAfterClose&&orderscnt()>0){
OpenClosedOrders(OP_BUY);
OpenClosedOrders(OP_SELL);
}
int totalNumber=0;
//////////////////////////////////////////////////
if(ss==true&&orderscnt()<1&&(OnlyOnce==false||ente r==true)&&(FridayOpenOrdersFilter==false||DayOfWee k()!=5||Hour()<_Hour)&&(Hour()==Hour_||OpenAtChoos enHour==false)){
double lastlot;double newlot;double TP,SL;
lastlot=0;
if(OpenHedgeFirstTime)
{
if(HedgeSL==0){SL=0;}else{SL=Ask-HedgeSL*point;}
if(HedgeTP==0){TP=0;}else{TP=Ask+HedgeTP*point;}
OrderSend(Symbol(),OP_BUY,HedgeLots,NormalizeDoubl e(Ask,Digits),3*Q,NormalizeDouble(SL,Digits),Norma lizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Blue);
if(HedgeSL==0){SL=0;}else{SL=Bid+HedgeSL*point;}
if(HedgeTP==0){TP=0;}else{TP=Bid-HedgeTP*point;}
OrderSend(Symbol(),OP_SELL,HedgeLots,NormalizeDoub le(Bid,Digits),3*Q,NormalizeDouble(SL,Digits),Norm alizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Red);
}
if(OpenSellLimitOrders){
for(i=1;i<=NumberOfSellLimitOrders;i++)
{
if(UseMultiplier){
if(X_Multiplier){
newlot=Multiplier*lastlot;
}
else{newlot=lastlot+SellLimitFirstLot;}
}
else{newlot=SellLimitFirstLot;}
if(newlot==0){newlot=SellLimitFirstLot;}
lastlot=newlot;
if(StartPrice==0){Price=Bid+(DistanceFromCurrentPr iceSL*point)+(i*DistanceBetweenSellL*point+i*Dista nce_AddSellL*point);}
else{Price=StartPrice+(DistanceFromCurrentPriceSL* point)+(i*DistanceBetweenSellL*point);}
if(HighLowCandle){Price=High[1]+(DistanceFromCurrentPriceSL*point)+(i*DistanceBet weenSellL*point);}
if(SellLimitTakeProfit==0){TP=0;}else{TP=Price-SellLimitTakeProfit*point;}
if(SellLimitSL==0){SL=0;}else{SL=Price+SellLimitSL *point;}
if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
OrderSend(Symbol(),OP_SELLLIMIT,newlot,Price,3,SL, TP,"MR.dollar EA"+totalNumber,MagicNumber,0,Red);
totalNumber++;
}
}
}
lastlot=0;
if(OpenBuyLimitOrders){
for(i=1;i<=NumberOfBuyLimitOrders;i++)
{
if(UseMultiplier){
if(X_Multiplier){
newlot=Multiplier*lastlot;
}
else{newlot=lastlot+BuyLimitFirstLot;}
}
else{newlot=BuyLimitFirstLot;}
if(newlot==0){newlot=BuyLimitFirstLot;}
lastlot=newlot;
if(StartPrice==0){Price=Ask-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point+i*Distance_AddBuyL*po int);}
else{Price=StartPrice-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point);}
if(HighLowCandle){Price=Low[1]-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point);}
if(BuyLimitTakeProfit==0){TP=0;}else{TP=Price+BuyL imitTakeProfit*point;}
if(BuyLimitSL==0){SL=0;}else{SL=Price-BuyLimitSL*point;}
if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
OrderSend(Symbol(),OP_BUYLIMIT,newlot,Price,3,SL,T P,"MR.dollar EA"+totalNumber,MagicNumber,0,Green);
totalNumber++;
}
}
}
lastlot=0;
if(OpenSellStopOrders){
for(i=1;i<=NumberOfSellStopOrders;i++)
{
if(UseMultiplier){
if(X_Multiplier){
newlot=Multiplier*lastlot;
}else{newlot=lastlot+SellStopFirstLot;}
}else{newlot=SellStopFirstLot;}
if(newlot==0){newlot=SellStopFirstLot;}
lastlot=newlot;
if(StartPrice==0){Price=Bid-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point+i*Distance_AddSellS* point);}
else{Price=StartPrice-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point);}
if(HighLowCandle){Price=Low[1]-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point);}
if(SellStopTakeProfit==0){TP=0;}else{TP=Price-SellStopTakeProfit*point;}
if(SellStopSL==0){SL=0;}else{SL=Price+SellStopSL*p oint;}
if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
OrderSend(Symbol(),OP_SELLSTOP,newlot,Price,3,SL,T P,"MR.dollar EA"+totalNumber,MagicNumber,0,Red);
totalNumber++;
}
}
}
lastlot=0;
if(OpenBuyStopOrders){
for(i=1;i<=NumberOfBuyStopOrders;i++)
{
if(UseMultiplier){
if(X_Multiplier){
newlot=Multiplier*lastlot;
}else{newlot=lastlot+BuyStopFirstLot;}
}else{newlot=BuyStopFirstLot;}
if(newlot==0){newlot=BuyStopFirstLot;}
lastlot=newlot;
// if(i>1){DistanceFromCurrentPriceBS=0;}
if(StartPrice==0){Price=Ask+(DistanceFromCurrentPr iceBS*point)+(i*DistanceBetweenBuyS*point+i*Distan ce_AddBuyS*point);}
else{Price=StartPrice+(DistanceFromCurrentPriceBS* point)+(i*DistanceBetweenBuyS*point);}
if(HighLowCandle){Price=High[1]+(DistanceFromCurrentPriceBS*point)+(i*DistanceBet weenBuyS*point);}
if(BuyStopTakeProfit==0){TP=0;}else{TP=Price+BuySt opTakeProfit*point;}
if(BuyStopSL==0){SL=0;}else{SL=Price-BuyStopSL*point;}
if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
OrderSend(Symbol(),OP_BUYSTOP,newlot,Price,3,SL,TP ,"MR.dollar EA"+totalNumber,MagicNumber,0,Green);
totalNumber++;
}
}
}
}
////////////////////////////////////////////////////
int m1;
if(Q+Qq>orderscnt()&&CloseIfLastOrderProfit){
DeletePendingOrders();
while(orders()>=1){CloseAllOrders();}
}
if (profit()>=Profit)
{
if(CloseOrdersAfterProfit){
while(orders()>=1){CloseAllOrders();
}
if(DeleteOrdersAfterProfit){DeletePendingOrders(); }
}
}
if((profit()<Loss&&CloseOrdersAfterLoss)||(CloseAf terPassMinutes&&TimePassed())){
while(orders()>=1&&m1<20){
CloseAllOrders();
DeletePendingOrders();
m1++;
}
}
if(DayOfWeek()==5&&Hour()>=_Hour){
if(FridayDeleteOrders==true){
DeletePendingOrders();}
if(FridayCloseOrders==true){
CloseAllOrders();}
}
}
//+------------------------------------------------------------------+
int TimePassed(){
for(int i=0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
if((TimeCurrent()-OrderOpenTime())/60>=MinutesPass){
return(true);
}
}
}
return(false);
}
int CloseAllOrders()
{
int total=OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeD ouble(Bid,digits),3)==false){
cnt=0;total=OrdersTotal();}
}
if (OrderType()==OP_SELL)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeD ouble(Ask,digits),3)==false){
cnt=0;total=OrdersTotal();}
}
}
}
return(0);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS TrailingStop |
//+------------------------------------------------------------------+
//|---------trailing stop
void MoveTrailingStop()
{
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(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOp enPrice()+TrailingProfit*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<Normal izeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blu e);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingSte p*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingProfit*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(Norma lizeDouble(Ask+TrailingStop*point,digits)))||(Orde rStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Ask+TrailingStop*point,digits),OrderTakeP rofit(),0,Red);
}
}
}
}
}
}
int DeletePendingOrders()
{
int total = OrdersTotal();
for (int cnt = total-1 ; cnt >= 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && (OrderType()>OP_SELL))
{
OrderDelete(OrderTicket());
}
}
return(0);
}
//+---------------------------------------------------------------------------------+
bool CheckOpenedOrders(string comment){
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string com=OrderComment();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
if(com==comment)return(true);
}
}
return(false);
}
void OpenClosedOrders(int type)
{
for(int i=0;i<OrdersHistoryTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string comment=OrderComment();double open=OrderOpenPrice();
double lott=OrderLots();double stop=OrderStopLoss();double profit=OrderTakeProfit();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber&&OrderType()==type){
if(CheckOpenedOrders(comment)==false){
if((type==OP_BUY&&!ReverseClosedOrders)||(type==OP _SELL&&ReverseClosedOrders)){
if(Ask>open+MarketInfo(Symbol(),MODE_STOPLEVEL)*Po int){
OrderSend(Symbol(),OP_BUYLIMIT,lott,open,3,stop,pr ofit,comment,MagicNumber,0,Green);}
if(Ask<open-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
OrderSend(Symbol(),OP_BUYSTOP,lott,open,3,stop,pro fit,comment,MagicNumber,0,Green);}
}
if((type==OP_SELL&&!ReverseClosedOrders)||(type==O P_BUY&&ReverseClosedOrders)){
if(Bid>open+MarketInfo(Symbol(),MODE_STOPLEVEL)*Po int){
OrderSend(Symbol(),OP_SELLSTOP,lott,open,3,stop,pr ofit,comment,MagicNumber,0,Green);}
if(Bid<open-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
OrderSend(Symbol(),OP_SELLLIMIT,lott,open,3,stop,p rofit,comment,MagicNumber,0,Green);}
}
}
}
}
}
double profit(){
double c;
for(int i=0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()){
c+=OrderProfit();
}
}
return(c);
}
- 14-02-2015, 04:39 PM #5
ارجوا معذرتكم فانا احاول من شهور ان يستجيب لطلبى ورجائى احد المبرمجيين لاكن من الواضح انشغالهم جميعا لذا ارجوا المعذره فى طرح طلبى هنا فطلبى قريب جدا من الطلب الخاص بهذا الموضوع فهو اكسبريت اوامر معلقه ايضا بمواصفات بسيطه وعاديه دون مضاعفات او اى خصائص اخرى وهو كما يلى
اكسبريت اوامر معلقه
مواصفات الاكسبريت المطلوبه
1-امكانيه فتح صفقه بيع او شراء ماركت بمجرد تفعيل الاكسبريت
2-تحديد حجم اللوت والربح ووقف الخساره لاوامر الماركت
3- امكانيه وضع اوامر شراء ستوب
a- تحديد حجم اللوت لاوامر الشراء
b-تحديد المسافه بين الاوامر
c- تحديد الارباح
d-تحديد وقف الخسائر
e-تحديد المسافه بين اول امر وسعر السوق
f-تحديد عدد الاوامر المعلقه للشراء ستوب
امكانيه وضع اوامر شراء ليمت4
a-تحديد حجم اللوت لاوامر الشراء
b-تحديد المسافه بين الاوامر
c- تحديد الارباح
d-تحديد وقف الخسائر
e-تحديد المسافه بين اول امر وسعر السوق
f-تحديد عدد الاوامر المعلقه للشراء ليمت
5- امكانيه وضع اوامر بيع ستوب وبيع ليمت بجميع الخيارات السابقه تماما
6-تكرار وضع اى امر يتم وصوله الى هدفه واغلاقه على ربح ا
7- ضمان استمراريه
عمل الاكسبريت دون توقف على الاطلاق وذلك بالحفاظ دائما على اعداد الاوامر المعلقه اعلى واسفل السعر ثابت كما يتم تحدديدها عند بدايه تشغيل الاكسبريت
8- صدور تنبيه صوتى فقط عند اغلاق اى امر على ربح
وممكن الاستعانه بهذا الاكسبريت فهو يقوم بكل المتطلبات ما عدا اوامر الماركت واستمراريه عمل الاكسبريت واذا كان الامر متعب لكم فلنكتفى باضافه اوامر الماركت فقط او كما يتيسر لكم والف شكر واعتذر مره اخرى
extern bool UseHourTrade = false;
extern int FromHourTrade = 7;
extern int ToHourTrade = 17;
extern bool OpenHedgeFirstTime=false;
extern double HedgeLots=0.1;
extern int HedgeTP=0;
extern int HedgeSL=0;
extern bool AddOrdersAfterClose=true;
extern bool ReverseClosedOrders=false;
extern bool CloseIfLastOrderProfit=false;
extern string S1="BuyStop Orders Settings ";
extern bool OpenBuyStopOrders=true;
extern int NumberOfBuyStopOrders=50;
extern double BuyStopFirstLot=0.1;
extern int DistanceFromCurrentPriceBS=0;
extern int DistanceBetweenBuyS=20;
extern int Distance_AddBuyS=0;
extern int BuyStopTakeProfit=0;
extern int BuyStopSL=0;
extern string S2="BuyLimit Orders Settings";
extern bool OpenBuyLimitOrders=true;
extern int NumberOfBuyLimitOrders=50;
extern double BuyLimitFirstLot=0.1;
extern int DistanceFromCurrentPriceBL=0;
extern int DistanceBetweenBuyL=20;
extern int Distance_AddBuyL=0;
extern int BuyLimitTakeProfit=0;
extern int BuyLimitSL=0;
extern string S3="SellStop Orders Settings";
extern bool OpenSellStopOrders=true;
extern int NumberOfSellStopOrders=50;
extern double SellStopFirstLot=0.1;
extern int DistanceFromCurrentPriceSS=0;
extern int DistanceBetweenSellS=20;
extern int Distance_AddSellS=0;
extern int SellStopTakeProfit=0;
extern int SellStopSL=0;
extern string S4="SellLimit Orders Settings";
extern bool OpenSellLimitOrders=true;
extern int NumberOfSellLimitOrders=50;
extern double SellLimitFirstLot=0.1;
extern int DistanceFromCurrentPriceSL=0;
extern int DistanceBetweenSellL=20;
extern int Distance_AddSellL=0;
extern int SellLimitTakeProfit=0;
extern int SellLimitSL=0;
extern string S5=" Lots Multiplier ";
extern bool UseMultiplier=true;
extern bool X_Multiplier=true;
extern double Multiplier=2;
extern string S6=" Order Open Time/Price Settings ";
extern bool HighLowCandle=false;
extern bool OpenAtChoosenHour=false;
extern int Hour_=12;
extern double StartPrice=0;
extern int Gap=3;
extern bool OnlyOnce=false;
extern string S7=" Close and Delete Orders ";
extern bool FridayOpenOrdersFilter=true;
extern bool FridayDeleteOrders=false;
extern bool FridayCloseOrders=false;
extern int _Hour=20;
extern bool CloseAfterPassMinutes=false;
extern int MinutesPass=100;
extern bool CloseOrdersAfterProfit=true;
extern bool DeleteOrdersAfterProfit=true;
extern int Profit=200;
extern bool CloseOrdersAfterLoss=false;
extern double Loss=-200;
extern string S8=" Order Management";
extern int TrailingStop=0;
extern int TrailingProfit=0;
extern int TrailingStep=0;
extern string S9="Time Filter";
extern bool FridayCloseEA=false;
extern int Friday_CloseHour=20;
bool enter;
double point;double Price;
int digits;int i,Q,Qq;
extern int MagicNumber=2533;
int init()
{
if(OpenBuyStopOrders&&OpenBuyLimitOrders){Q=Number OfBuyLimitOrders+NumberOfBuyStopOrders;}
else if((OpenBuyStopOrders==false&&OpenBuyLimitOrders)) {Q=NumberOfBuyLimitOrders;}
else if((OpenBuyStopOrders&&OpenBuyLimitOrders==false)) {Q=NumberOfBuyStopOrders;}
else{Q=0;}
if(OpenSellStopOrders&&OpenSellLimitOrders){Qq=Num berOfSellLimitOrders+NumberOfSellStopOrders;}
else if((OpenSellStopOrders&&OpenSellLimitOrders==false )){Qq=NumberOfSellStopOrders;}
else if((OpenSellStopOrders==false&&OpenSellLimitOrders )){Qq=NumberOfSellLimitOrders;}
else{Qq=0;}
enter=true;
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 cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber){
cnt++;
}
}
}
return(cnt);
}
int ordersPen(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()>OP_SE LL){
cnt++;
}
}
}
return(cnt);
}
int orders(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()<=OP_S ELL){
cnt++;
}
}
}
return(cnt);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS Start function |
//+------------------------------------------------------------------+
int start()
{
Comment("Programmed by MR.dollar"+"\n"+"منتدى المتداول العربي"+"\n"+"www.arabictrader.com/vb"+"\n"+
"Number Of Pending Orders = "+ordersPen()+"\n"+"Number Of Market Orders = "+orders()+"\n"+
"Account Free Margin = "+DoubleToStr(AccountFreeMargin(),2)+"\n"+"Pro fit Value = "+DoubleToStr(AccountProfit(),2));
bool ss=true;
if(Qq+Q==orderscnt()&&!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
TimeHour(TimeCurrent()) < ToHourTrade))&&UseHourTrade){
DeletePendingOrders();
}
if (UseHourTrade){
if(!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
TimeHour(TimeCurrent()) < ToHourTrade))){
Comment("Non-Trading Hours!");
ss=false;
}
}
if(TrailingStop>0)MoveTrailingStop();
if(FridayCloseEA&&Hour()>=Friday_CloseHour&&DayOfW eek()==5)
return;
/////////////////////////add orders again//////////////////
if(AddOrdersAfterClose&&orderscnt()>0){
OpenClosedOrders(OP_BUY);
OpenClosedOrders(OP_SELL);
}
int totalNumber=0;
//////////////////////////////////////////////////
if(ss==true&&orderscnt()<1&&(OnlyOnce==false||ente r==true)&&(FridayOpenOrdersFilter==false||DayOfWee k()!=5||Hour()<_Hour)&&(Hour()==Hour_||OpenAtChoos enHour==false)){
double lastlot;double newlot;double TP,SL;
lastlot=0;
if(OpenHedgeFirstTime)
{
if(HedgeSL==0){SL=0;}else{SL=Ask-HedgeSL*point;}
if(HedgeTP==0){TP=0;}else{TP=Ask+HedgeTP*point;}
OrderSend(Symbol(),OP_BUY,HedgeLots,NormalizeDoubl e(Ask,Digits),3*Q,NormalizeDouble(SL,Digits),Norma lizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Blue);
if(HedgeSL==0){SL=0;}else{SL=Bid+HedgeSL*point;}
if(HedgeTP==0){TP=0;}else{TP=Bid-HedgeTP*point;}
OrderSend(Symbol(),OP_SELL,HedgeLots,NormalizeDoub le(Bid,Digits),3*Q,NormalizeDouble(SL,Digits),Norm alizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Red);
}
if(OpenSellLimitOrders){
for(i=1;i<=NumberOfSellLimitOrders;i++)
{
if(UseMultiplier){
if(X_Multiplier){
newlot=Multiplier*lastlot;
}
else{newlot=lastlot+SellLimitFirstLot;}
}
else{newlot=SellLimitFirstLot;}
if(newlot==0){newlot=SellLimitFirstLot;}
lastlot=newlot;
if(StartPrice==0){Price=Bid+(DistanceFromCurrentPr iceSL*point)+(i*DistanceBetweenSellL*point+i*Dista nce_AddSellL*point);}
else{Price=StartPrice+(DistanceFromCurrentPriceSL* point)+(i*DistanceBetweenSellL*point);}
if(HighLowCandle){Price=High[1]+(DistanceFromCurrentPriceSL*point)+(i*DistanceBet weenSellL*point);}
if(SellLimitTakeProfit==0){TP=0;}else{TP=Price-SellLimitTakeProfit*point;}
if(SellLimitSL==0){SL=0;}else{SL=Price+SellLimitSL *point;}
if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
OrderSend(Symbol(),OP_SELLLIMIT,newlot,Price,3,SL, TP,"MR.dollar EA"+totalNumber,MagicNumber,0,Red);
totalNumber++;
}
}
}
lastlot=0;
if(OpenBuyLimitOrders){
for(i=1;i<=NumberOfBuyLimitOrders;i++)
{
if(UseMultiplier){
if(X_Multiplier){
newlot=Multiplier*lastlot;
}
else{newlot=lastlot+BuyLimitFirstLot;}
}
else{newlot=BuyLimitFirstLot;}
if(newlot==0){newlot=BuyLimitFirstLot;}
lastlot=newlot;
if(StartPrice==0){Price=Ask-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point+i*Distance_AddBuyL*po int);}
else{Price=StartPrice-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point);}
if(HighLowCandle){Price=Low[1]-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point);}
if(BuyLimitTakeProfit==0){TP=0;}else{TP=Price+BuyL imitTakeProfit*point;}
if(BuyLimitSL==0){SL=0;}else{SL=Price-BuyLimitSL*point;}
if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
OrderSend(Symbol(),OP_BUYLIMIT,newlot,Price,3,SL,T P,"MR.dollar EA"+totalNumber,MagicNumber,0,Green);
totalNumber++;
}
}
}
lastlot=0;
if(OpenSellStopOrders){
for(i=1;i<=NumberOfSellStopOrders;i++)
{
if(UseMultiplier){
if(X_Multiplier){
newlot=Multiplier*lastlot;
}else{newlot=lastlot+SellStopFirstLot;}
}else{newlot=SellStopFirstLot;}
if(newlot==0){newlot=SellStopFirstLot;}
lastlot=newlot;
if(StartPrice==0){Price=Bid-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point+i*Distance_AddSellS* point);}
else{Price=StartPrice-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point);}
if(HighLowCandle){Price=Low[1]-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point);}
if(SellStopTakeProfit==0){TP=0;}else{TP=Price-SellStopTakeProfit*point;}
if(SellStopSL==0){SL=0;}else{SL=Price+SellStopSL*p oint;}
if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
OrderSend(Symbol(),OP_SELLSTOP,newlot,Price,3,SL,T P,"MR.dollar EA"+totalNumber,MagicNumber,0,Red);
totalNumber++;
}
}
}
lastlot=0;
if(OpenBuyStopOrders){
for(i=1;i<=NumberOfBuyStopOrders;i++)
{
if(UseMultiplier){
if(X_Multiplier){
newlot=Multiplier*lastlot;
}else{newlot=lastlot+BuyStopFirstLot;}
}else{newlot=BuyStopFirstLot;}
if(newlot==0){newlot=BuyStopFirstLot;}
lastlot=newlot;
// if(i>1){DistanceFromCurrentPriceBS=0;}
if(StartPrice==0){Price=Ask+(DistanceFromCurrentPr iceBS*point)+(i*DistanceBetweenBuyS*point+i*Distan ce_AddBuyS*point);}
else{Price=StartPrice+(DistanceFromCurrentPriceBS* point)+(i*DistanceBetweenBuyS*point);}
if(HighLowCandle){Price=High[1]+(DistanceFromCurrentPriceBS*point)+(i*DistanceBet weenBuyS*point);}
if(BuyStopTakeProfit==0){TP=0;}else{TP=Price+BuySt opTakeProfit*point;}
if(BuyStopSL==0){SL=0;}else{SL=Price-BuyStopSL*point;}
if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
OrderSend(Symbol(),OP_BUYSTOP,newlot,Price,3,SL,TP ,"MR.dollar EA"+totalNumber,MagicNumber,0,Green);
totalNumber++;
}
}
}
}
////////////////////////////////////////////////////
int m1;
if(Q+Qq>orderscnt()&&CloseIfLastOrderProfit){
DeletePendingOrders();
while(orders()>=1){CloseAllOrders();}
}
if (profit()>=Profit)
{
if(CloseOrdersAfterProfit){
while(orders()>=1){CloseAllOrders();
}
if(DeleteOrdersAfterProfit){DeletePendingOrders(); }
}
}
if((profit()<Loss&&CloseOrdersAfterLoss)||(CloseAf terPassMinutes&&TimePassed())){
while(orders()>=1&&m1<20){
CloseAllOrders();
DeletePendingOrders();
m1++;
}
}
if(DayOfWeek()==5&&Hour()>=_Hour){
if(FridayDeleteOrders==true){
DeletePendingOrders();}
if(FridayCloseOrders==true){
CloseAllOrders();}
}
}
//+------------------------------------------------------------------+
int TimePassed(){
for(int i=0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
if((TimeCurrent()-OrderOpenTime())/60>=MinutesPass){
return(true);
}
}
}
return(false);
}
int CloseAllOrders()
{
int total=OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeD ouble(Bid,digits),3)==false){
cnt=0;total=OrdersTotal();}
}
if (OrderType()==OP_SELL)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeD ouble(Ask,digits),3)==false){
cnt=0;total=OrdersTotal();}
}
}
}
return(0);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS TrailingStop |
//+------------------------------------------------------------------+
//|---------trailing stop
void MoveTrailingStop()
{
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(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOp enPrice()+TrailingProfit*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<Normal izeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blu e);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingSte p*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingProfit*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(Norma lizeDouble(Ask+TrailingStop*point,digits)))||(Orde rStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Ask+TrailingStop*point,digits),OrderTakeP rofit(),0,Red);
}
}
}
}
}
}
int DeletePendingOrders()
{
int total = OrdersTotal();
for (int cnt = total-1 ; cnt >= 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && (OrderType()>OP_SELL))
{
OrderDelete(OrderTicket());
}
}
return(0);
}
//+---------------------------------------------------------------------------------+
bool CheckOpenedOrders(string comment){
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string com=OrderComment();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
if(com==comment)return(true);
}
}
return(false);
}
void OpenClosedOrders(int type)
{
for(int i=0;i<OrdersHistoryTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string comment=OrderComment();double open=OrderOpenPrice();
double lott=OrderLots();double stop=OrderStopLoss();double profit=OrderTakeProfit();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber&&OrderType()==type){
if(CheckOpenedOrders(comment)==false){
if((type==OP_BUY&&!ReverseClosedOrders)||(type==OP _SELL&&ReverseClosedOrders)){
if(Ask>open+MarketInfo(Symbol(),MODE_STOPLEVEL)*Po int){
OrderSend(Symbol(),OP_BUYLIMIT,lott,open,3,stop,pr ofit,comment,MagicNumber,0,Green);}
if(Ask<open-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
OrderSend(Symbol(),OP_BUYSTOP,lott,open,3,stop,pro fit,comment,MagicNumber,0,Green);}
}
if((type==OP_SELL&&!ReverseClosedOrders)||(type==O P_BUY&&ReverseClosedOrders)){
if(Bid>open+MarketInfo(Symbol(),MODE_STOPLEVEL)*Po int){
OrderSend(Symbol(),OP_SELLSTOP,lott,open,3,stop,pr ofit,comment,MagicNumber,0,Green);}
if(Bid<open-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
OrderSend(Symbol(),OP_SELLLIMIT,lott,open,3,stop,p rofit,comment,MagicNumber,0,Green);}
}
}
}
}
}
double profit(){
double c;
for(int i=0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()){
c+=OrderProfit();
}
}
return(c);
}
- 14-02-2015, 08:51 PM #6
اخي سأحاول عمله لك على الاكسبيرت الذى قمت بعمله
ارجو الانتظار
عندما يتوفر لدي وقت سوف اطرحه تابع معانا الموضوع الذي ارفقته فى مشاركة سابقة وجاري تطويره واضافة امكانيات كثيرة ربما نصل الى ما تريد
- 15-02-2015, 03:45 AM #7
تفضل هذه النسخة جربها
والذي استطيع اضافته لك سوف اضيفه
- 15-02-2015, 04:51 AM #8
مليون شكر لك اخى الف مليون شكر وانا متابع مع حضرتك ولكن ارجوا وضع اللينك المقصود للمتابعه
- 15-02-2015, 12:16 PM #9
الف شكر
ولكن ازاي احدد حجم العقد لكل اوردر على حده
- 15-02-2015, 05:59 PM #10
اخى العزيز ادام الله عليك الصحه والعافيه كما تداوم انت على مساعده الغير
ليس المطلوب تحديد حجم اللوت لكل اوردر على حدا ولكن المطلوب تحديد حجم اللوت لكل نوع من الاوامر شراء ستوب شراء ليمت بيع ستوب وبيع ليمت فقط لا غير كما انه من الممكن ان يكون تحديد حجم لوت واحد يسرى على كل الاوامر المذكوره كما تشاء وكما يكون ابسط لك فى التنفيذ اخى وتقبل احترامى واعتزازى باهتمامك
- 15-02-2015, 10:42 PM #11
اخي مرفق اكسبيرت
حجم اللوت فى الأول لصفقات الماركت
ولكل نوع من الاوامر المعلقة حجم لوت خاص
اضفت اضافة اوامر معلقة بعد الأغلاق ولكنها لا تعمل لماذا لا اعرف
على العموم مرفق الأكسبيرت مفتوح الكود
يستطيع احد الأخوة المبرمجين تصليح هذا العيب
اسف جدا حاولت المساعدة وهذا اقصي ما استطعت فعله
- 16-02-2015, 12:10 AM #12
- 16-02-2015, 01:38 AM #13
الف شكر ليك وجزاك الله الف خير
- 16-02-2015, 02:36 AM #14
- 16-02-2015, 06:55 AM #15
فهمت من مشاركتك انه بعد اغلاق جميع العقود بالدولار لايفتح عقود جديدة ؟ اما اذا كنت تقصد انه بعد اغلاق كل عقد يفتح له عقد بديل فهذا موضوع آخر مع ملاحظة فشل الفكرة وسبق عمل اكسبيرتات لها ، عندما يتفعل شراء ثم يغلق بربح سيكون السعر اعلى وهنا بدل من الباي ستوب سيفتح مثلا باي ليميت او سل ستوب كما ستختاره ، ستحتاج لصنع دوال تعود بمعلومات الصفقة المغلقة لتفتح صفقة جديدة حسب نفس المعلومة .
عموما جرب نسختك الأخيرة كومبيلر ستجد فيه رسائل أثنين منها هامة لايمكن تجاوزها ، وجرب عمل كومبيلر للنسخة المعدلة ستجد انه تم اصلاحها وبالمقارنة ستعرف سبب الخطأ .
ملاحظة اضافية لم أرى اي اكسبيرت رابح وهو يبيع ويشتري مع الصعود ويكرر يبيع ويشتري مع النزول لأن مايدفع في الأسبريد يطحن أي ربح واعتقد أن الشركة التي فيها مثل هذه الحسابات شركة سعيدة بمثل هذه الفكرة . اهلا بك في أي خدمة