النتائج 1 إلى 12 من 12
الموضوع: طلب كود برمجة للمضاعفات بشكل عاجل
- 04-09-2013, 11:38 PM #1
طلب كود برمجة للمضاعفات بشكل عاجل
السلام عليكم و رحمة الله
أخواني المبرمجين اطلب منكم كود للمضاعفات بحيث ممكن اخليه على اكثر من عملة و ما يتدخل او يعدل على العملة الاخرى كل اكسبيرت يشتغل على الشارت تبعه.
بحيث اذا كانت الصفقة خاسرة يضاعف قيمة اللوت بحيث ممكن اخليه على اكثر من عملة و ما يتدخل او يعدل على العملة الاخرى و كل اكسبيرت يشتغل على الشارت تبعه فقط.
ملاحظة: انا لا اريد ان افتح صفقة في هذا الكود فقط أريده ان يقوم بتعديل (مضاعفة) اللوت عندما تكون الصفقة اغلقة على خسارة. و ارجو مراعات اني اريد ان ادرج الاكسبيرت على اكثر من شارت و ممكن تقفل اكثر من صفقة لعملات أخرى و لكن ليس للعملة التي يعمل عليها، انا هنا وجدت مشكلة حيث ان اللوت لم يحتسب بشكل صحيح.
اذا ممكن تزويدي بأكثر من كود للمضاعفات اكون لكم من الشاكرين.
و أشكر مروركم الكريم. و جزاكم الله عني ألف خير ...
- 05-09-2013, 07:12 AM #2
على حسب ما فهمت من كلامك
لكن استخدام الماجيك نمبر يحل المشكلة في عملية المضاعفة المستقلة لكل عملة على شارت لانك اما ان تغلق صفقة او تتركها خاسرة وتفتح صفقة جديدة بشروط ومن ضمنها الماجيك نمبر
ثم ان الموضوع ليس كود قائم بذاته هي عملية شرط تحدده في الاكواد او لمجموعة اكواد فقط
- 05-09-2013, 09:19 PM #3
- 05-09-2013, 09:20 PM #4
الرجاء المشاركة بأكثر من مثال من أخوانا المبرمجين ...
- 05-09-2013, 10:34 PM #5
- 05-09-2013, 11:55 PM #6
لا يتم فتح صفقة جديدة المطلوب هو ان يقوم الكود بمراجعة الصفقة المقفولة فاذا كانت خاسرة يقوم بمضاعفة قيمة اللوت. بحيث اني عرفت اللوت بمتغير معروف سابقا.
ليس المطلوب من الكود غلق او فتح الصفقات فقط مراجعة اخر صفقة فتحها الاكسبيرت فاذا كانت خاسرة يضاعف قيمة اللوت.
و شكرا
- 06-09-2013, 06:04 AM #7
رد:طلب كود برمجة للمضاعفات بشكل عاجل
كود: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); }
كود:if(UseMultiplier){ if(WinorLoss()==false){Lots=MathMin(lastlot()* Multiplier,MarketInfo(Symbol(),MODE_MAXLOT));} if(WinorLoss()==true){Lots=Firstlot;} }
- 06-09-2013, 01:07 PM #8
شكرا أخي LOveR
ممكن ان تعطيني طريقة أخرى ، أو يمكن أحد من الأخوة عنده طريقة أخرى حتى ممكن أختار الأفضل أو أدمج بين أكثر من فكرة.
و لكم مني جزيل الشكر
- 07-09-2013, 07:25 AM #9
رد:طلب كود برمجة للمضاعفات بشكل عاجل
طالما أنك ستضع شرط الماجيك نمبر في الإكسبرت فسيكون كافي لأن يتعامل كل إكسبرت مع الصفقات التي قام بفتحها فقط
سوف تحتاج دالة لمعرفة ربح آخر صفقة وأيضا حفظ حجم اللوت لها
كود PHP:double LastOrderLots;
double LastOrderProfit()
{
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
LastOrderLots=OrderLots();
return(OrderProfit());
}
}
return(0);
}
كود PHP:double newlot;
if(LastOrderProfit()<0)newlot=LastOrderLots*2;
- 07-09-2013, 08:00 AM #10
هلا فيك استاذ اسامه سعيد برؤيتك
اعتقد مشكلة الاخ الي يعاني منها انه الاكود يعتبر موجب ١ للصفقه ناجحه ولا تضاعف اذا كانت هذي مشكلتك اشرح بالتفصيل ممكن اساعدك هناك حلول كثيره ولك تحياتي
- 08-09-2013, 02:30 AM #11
رد:طلب كود برمجة للمضاعفات بشكل عاجل
السلام عليكم ورحمة الله
أنا أستخدم هذا الكود من زمان في فكرة أعتقد نفس فكرتك ...
يفتح الإكسبيرت أوردر لو وصلت الهدف يكرر من جديد ولو ضرب
الستوب يستمر يضاعف كلما ضرب الستوب حتى يصل للهدف ويكون
بالطبع إجمالي العقود المضاعفة ربح مادام الهدف أكبر من الستوب.
ولكن فكرة إستخدامها على عدة أزواج قد تكون غير جيدة ...
إلا إذا إستخدمت حساب ميكرو وأقل عقد ممكن فقد تكون مناسبة
ولكن هذا في النهاية يتوقف على حسابك وكم يستطيع الصمود.
كود:Start(){ ... ... ... LastClosedTrade(); if(LastOrderProfit < 0){ NewLots = NormalizeDouble(LastOrderLots*2,1); if(NewLots>MaxLots) NewLots = MaxLots; if(LastOrderType == 0 && NewLots<=MaxLots){//0 = Buy ticket=OrderSend(Symbol(),OP_SELL,NewLots,Bid,Slippage,0,0,Expert_Name,MAGIC,0,Red); if(ticket<0){ Print("Sell Order failed with error 3#",GetLastError()); } if(UseSound) PlaySound("alert.wav"); Sleep(1000); if(ticket>0){ OrderSelect(ticket,SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),Bid+SL*Point,Bid-TP*Point,0,Green); } } if(LastOrderType == 1 && NewLots<=MaxLots){//1 = Sell ticket=OrderSend(Symbol(),OP_BUY,NewLots,Ask,Slippage,0,0,Expert_Name,MAGIC,0,Blue); if(ticket<0){ Print("Buy Order failed with error 4#",GetLastError()); } if(UseSound) PlaySound("alert.wav"); Sleep(1000); if(ticket>0){ OrderSelect(ticket,SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),Ask-SL*Point,Ask+TP*Point,0,Green); } }//if(LastOrderProfit<0) ... ... ... }//start void LastClosedTrade(){ int cnt, total; total = OrdersHistoryTotal(); for(cnt=0;cnt<total; cnt++){ OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC && OrderProfit()!=0){ LastOrderType = OrderType(); LastOrderLots = OrderLots(); LastOrderProfit = OrderProfit(); } } }
- 08-10-2013, 10:15 PM #12