النتائج 1,741 إلى 1,755 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 12-03-2012, 10:13 PM #1741
لماذا قمت بتعريفه zz لن تفرق طبعا ويمكنك تعريفه بأي إسم آخر
الكود السابق ربما به بعض التعقيد سوف أشرح الفكره ببساطه
أولا سوف أقوم بالبحث عن آخر قمه وقاع للزيجزاج لذلك سوف استخدم الحلقه for
كود PHP:for(int i=start;i<Bars;i++){
double zz=iCustom(Symbol(),0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
أو سعر القمه أو القاع في حال كان هناك قمة أو قاع متكونه
لذلك سوف أضع الشرط
كود PHP:if(zz!=0){
return(zz);
}
كود PHP:double ZigZag(){
for(int i=0;i<Bars;i++){
double zz=iCustom(Symbol(),0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
if(zz!=0){
return(zz);
}
}
فلن أستخدم هذا الشرط مباشرة
كود PHP:if(zz!=0){
return(zz);
}
لذلك وضعت هذا الشرط
كود PHP:if(zz!=0)N++;
ثم اريد التوقف الآن عند القمه رقم 3 مثلا سأضع الشرط
كود PHP:if(N==shift)return(zz);
معنى
كود PHP:ZigZag(i,1)>ZigZag(i,2)
هذا الكود معقد قليلا نظرا لإني أستخدمه في المؤشر لكن في الإكسبرت سوف يكون الكود أبسط من ذلك
- 12-03-2012, 10:22 PM #1742
- 12-03-2012, 10:46 PM #1743
- 13-03-2012, 08:28 PM #1744
- 13-03-2012, 08:48 PM #1745
السلام عليكم أخي أسامه
حتى أعبر عن إختراق الشمعه للمستوى و ليس مجرد الإغلاق فوقه والإختراق يكون بحيث تغلق الشمعه فوق المستوى بمالايقل عن ثلث جسم الشمعه :::
قمت بوضع الكود
كود PHP:&& (Open[1]>line1)
كود PHP:&& (Close[1]>line1+(33*body1)/100)
أيضا لاحظت أن الإكسبيرت يضع الستوب عند الهاي أو عند اللو بينما أردته فوق الهاي ب14 نقطه و أسفل اللو ب 14 نقطه كما في الإكسبيرت .
- 13-03-2012, 10:29 PM #1746
مساء الخير أستاذ أسامة
أنا كنت بحاول أعمل إكسبيرت للموضوع ده لأخ طالبه
https://forum.arabictrader.com/t85073.html
بس الإكسبيرت وقف معايا فإني :
مش عارف أعمل الدخول بعقدين شراء وبيع في نفس الوقت ويكون الإكسبيرت في نفس الوقت لا يفتح أكتر من العقدين الحاليين
وكمان هو طالب إن الإكسبيرت يقفل نصف العقد على هدف أول ويترك النصف الأخر للهدف الثاني أو يغلق عن طريق تريلنج أستوب يحدد من الخارج
وطالب إن الإكسبيرت يعمل على المجنون فقط فأنا عوضت عن Symbol() بــ "GBPJPY"
فهل يجب إني أعوض Symbol في باقي الكود كله
------------------------------
من الأخر أرجو مراجعة الإكسبيرت كله وتوضيح الأخطاء
أو تعمل للأخ الإكسبيرت في موضوعه وانا أراجعه
من الموضوع هناك
https://forum.arabictrader.com/t85073.html
كود PHP://+------------------------------------------------------------------+
//| yousefnewday.mq4 |
//| Copyright 2012, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int Takeprofit=30;
extern int Stoploss=30;
extern double Lots=1;
int Magicnumber=584234;
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;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits<4)
{
point=0.01;
digits=2;
}
else
{
point=0.0001;
digits=4;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert 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);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(TrailingStop>0)MoveTrailingStop();
if(BreakEven>0)MoveBreakEven();
double SL,TP;
double DayClose=iClose("GBPJPY",PERIOD_D1,1);
double BuyPrice=DayClose;
double SellPrice=DayClose;
//+----------------------------------------------------------------+
if(Hour()==0 && Minute()>10)
if(orderstotal()<1){
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;}
OrderSend("GBPJPY",OP_BUY,Lots,NormalizeDouble(BuyPrice,digits),3,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"YousefH",Magicnumber,0,Blue);
PlaySound("Alert.wav");
}
if(Hour()==0 && Minute()>10)
if(orderstotal()<1){
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend("GBPJPY",OP_SELL,Lots,NormalizeDouble(SellPrice,digits),3,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"YousefH",Magicnumber,0,Blue);
}
return(0);
}
//+-----------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 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);
}
}
}
}
}
}
}
آخر تعديل بواسطة xcv114 ، 13-03-2012 الساعة 10:31 PM
- 14-03-2012, 01:23 AM #1747
طيب معلش سؤال تاني
مثال عشان أطبق عليه لإني فعلا تعبت من موضوع أكواد الزجزاج ده
------------------
لو دلوقتي أخر قاعين في الزجزاج ذي الصورة المرفقة
- وأنا حابب أعمل إكسبيرت يحسب الفرق بين القاعين ويضربه × 140% ( بحيث دي تكون فوق القاعين وتكون هي نقطة الشراء ) الخط الأصفر على الشارت
- ويكون الهدف الأول نسبة 180 % ( الخط الأحمر ) ويكون الهدف التاني مثلا 190% ( الخط الأزرق )
( في حالة القاعين يكون الشراء والأهداف لفوق )
------------------------
والعكس في حالة أخر قمتين
يبيع من 140% ( بحيث تكون تحت القمتين ) وهدف أول 180% وهدف تاني 190%
( في حالة القمتين يكون البيع والأهداف لتحت )
--------------------------
يعني الشارت ده مثال على أخر قاعين
- 14-03-2012, 01:37 AM #1748
- 14-03-2012, 04:28 AM #1749
- 14-03-2012, 08:07 PM #1750
أولا بالنسبة لفتح عقدين فالأمر بسيط قم بوضع أمرين OrderSend
كود PHP:OrderSend("GBPJPY",OP_BUY,Lots,NormalizeDouble(BuyPrice,digits),3,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"YousefH",Magicnumber,0,Blue);
OrderSend("GBPJPY",OP_BUY,Lots,NormalizeDouble(BuyPrice,digits),3,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"YousefH",Magicnumber,0,Blue);
إغلاق جزء من الصفقه سوف تحتاج إلى عمل دالة لإغلاق جزء من الصفقه
كود PHP:void PartialClose()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
int tick=OrderTicket();int T=OrderType();double P=OrderOpenPrice();double L=OrderLots();double p.=OrderTakeProfit();
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (T==OP_BUY&&Bid>(P+TakeProfit1*Point*Q))
&&L==GlobalVariableGet("Lots"+Symbol()+Period()+tick))
{
OrderModify(tick,OrderOpenPrice(),P+StopLossAfterPartial*Point*Q,p.,0);
OrderClose(tick,NormalizeDouble(PercentClose1*GlobalVariableGet("Lots"+Symbol()+Period()+tick)/100,2),NormalizeDouble(Bid,Digits),3*Q);
}
if (T==OP_SELL&&Ask<(P-TakeProfit1*Point*Q))
&&L==GlobalVariableGet("Lots"+Symbol()+Period()+tick))
{
OrderModify(tick,P,P-StopLossAfterPartial*Point*Q,p.,0);
OrderClose(tick,NormalizeDouble(PercentClose1*GlobalVariableGet("Lots"+Symbol()+Period()+tick)/100,2),NormalizeDouble(Ask,Digits),3*Q);
}//////
}
}
}
كود PHP:if(UsePartialClose)PartialClose();
- 14-03-2012, 08:50 PM #1751
- 14-03-2012, 09:47 PM #1752
داله لتحديد آخر قمه وقاع
كود PHP:double ZigZag_Low(int shift){
int N;
for(int i=0;i<Bars;i++){
double zz=iCustom(Symbol(),0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
if(zz!=0&&zz==Low[i])N++;
if(shift==N)return(zz);
}
double ZigZag_High(int shift){
int N;
for(int i=0;i<Bars;i++){
double zz=iCustom(Symbol(),0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
if(zz!=0&&zz==High[i])N++;
if(shift==N)return(zz);
}
كود PHP:double Low_Diff=MathAbs(ZigZag_Low(1)-ZigZag_Low(2));
double Buy_Price=ZigZag_Low(1)+(Low_Diff*140)/100;
double High_Diff=MathAbs(ZigZag_High(1)-ZigZag_High(2));
double Sell_Price=ZigZag_High(1)-(High_Diff*140)/100;
- 14-03-2012, 09:49 PM #1753
- 14-03-2012, 10:21 PM #1754
- 14-03-2012, 10:57 PM #1755
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM