النتائج 1,501 إلى 1,515 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 14-01-2012, 11:15 PM #1501
- 15-01-2012, 01:34 AM #1502
- 15-01-2012, 10:27 AM #1503
- 15-01-2012, 02:15 PM #1504
للاسف الاخ MR.dollar لم افلح في تركيب الكود لانني جديد في البرمجة
يبدو الاكسبيرت معقد ممكن اتركبنا الكود و هدا هو قسم الستارت
او احملك الاكسبيرت ؟
كود PHP :
كود PHP:int start() {
double ld_200;
double ld_208;
if (RiskMM) {
if (Risk < 0.1 || Risk > 100.0) {
Comment("Invalid Risk Value.");
return (0);
}
LotsBuy = MathFloor(100.0 * (AccountFreeMargin() * AccountLeverage() * Risk * Point) / (Ask * MarketInfo(Symbol(), MODE_LOTSIZE) * MarketInfo(Symbol(), MODE_MINLOT))) * MarketInfo(Symbol(), MODE_MINLOT);
LotsSell = MathFloor(100.0 * (AccountFreeMargin() * AccountLeverage() * Risk * Point) / (Ask * MarketInfo(Symbol(), MODE_LOTSIZE) * MarketInfo(Symbol(), MODE_MINLOT))) * MarketInfo(Symbol(), MODE_MINLOT);
}
if (RiskMM == FALSE) {
}
if (gd_672 != 0.0 && MinProfit > 0.0) {
if (gd_672 <= AccountBalance() && AccountBalance() <= gd_672 + MinProfit) Multiplier = 1;
else {
if (AccountBalance() < gd_672) {
}
}
}
gd_672 = AccountBalance();
double ld_0 = 0;
ld_0 = AccountEquity() - AccountBalance();
if (ld_0 < gd_684) gd_684 = ld_0;
string ls_8 = "false";
if (UseBasketLoss == TRUE && ld_0 <= (-1 * BasketLoss)) ls_8 = "true";
double ld_16 = 0;
double ld_24 = 0;
string l_symbol_32 = OrderSymbol();
double l_spread_40 = MarketInfo(l_symbol_32, MODE_SPREAD);
double l_digits_48 = MarketInfo(l_symbol_32, MODE_DIGITS);
double l_minlot_56 = MarketInfo(l_symbol_32, MODE_MINLOT);
double l_ima_64 = iMA(Symbol(), 0, MaPeriod, 0, MaMode, MaPrice, 1);
double l_istochastic_72 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_LWMA, 1, MODE_MAIN, 1);
double l_istochastic_80 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_LWMA, 1, MODE_SIGNAL, 1);
string ls_88 = "false";
string ls_96 = "false";
if (l_istochastic_72 > l_istochastic_80) ls_88 = "true";
if (l_istochastic_72 < l_istochastic_80) ls_96 = "true";
string ls_104 = "false";
string ls_112 = "false";
if (ExtendedZone == FALSE && l_istochastic_80 < SimpleZoneBuy) ls_104 = "true";
if (ExtendedZone == FALSE && l_istochastic_80 > SimpleZoneSell) ls_112 = "true";
if (ExtendedZone == TRUE && l_istochastic_80 > StartZoneBuy && l_istochastic_80 < EndZoneBuy) ls_104 = "true";
if (ExtendedZone == TRUE && l_istochastic_80 > StartZoneSell && l_istochastic_80 < EndZoneSell) ls_112 = "true";
string ls_120 = "false";
string ls_128 = "false";
if (ExtendedZone == TRUE && l_istochastic_80 <= CloseLevelDnSell || l_istochastic_80 >= CloseLevelUpSell) ls_120 = "true";
if (ExtendedZone == TRUE && l_istochastic_80 >= CloseLevelUpBuy || l_istochastic_80 <= CloseLevelDnBuy) ls_128 = "true";
string ls_136 = "false";
string ls_144 = "false";
if (Ask > l_ima_64 || MaFilter == FALSE) ls_136 = "true";
if (Bid < l_ima_64 || MaFilter == FALSE) ls_144 = "true";
string ls_152 = "false";
if (MaxSpread == MaxSpread || UseMaxSpread == FALSE) ls_152 = "true";
string ls_160 = "false";
string ls_168 = "false";
if (OrdersTotalMagicBuy(g_magic_440) < MaxBuyOrders || MaxOpenOrders == FALSE) ls_160 = "true";
if (OrdersTotalMagicSell(g_magic_448) < MaxSellOrders || MaxOpenOrders == FALSE) ls_168 = "true";
string ls_176 = "false";
if (AccountEquity() < EquityTarget || UseEquityTarget == FALSE) ls_176 = "true";
string ls_184 = "false";
if (TimeFilter == TRUE && !(Hour() < StartHour || Hour() >= EndHour)) ls_184 = "true";
string ls_192 = "false";
if (CloseFriday == TRUE && DayOfWeek() == 5 && TimeCurrent() >= StrToTime(CloseFridayHour + ":00")) ls_192 = "true";
if (l_minlot_56 == 0.01) {
gd_632 = 2;
if (maxLot <= 0.0) maxLot = MarketInfo(l_symbol_32, MODE_MAXLOT);
}
if (l_minlot_56 == 0.1) {
gd_632 = 1;
if (maxLot <= 0.0) maxLot = AccountBalance() / 2.0 / 1000.0;
}
if (OrdersTotalMagicBuy(g_magic_440) > 0) {
for (g_pos_552 = 0; g_pos_552 < OrdersTotal(); g_pos_552++) {
OrderSelect(g_pos_552, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_440) {
g_ticket_692 = OrderTicket();
OrderSelect(g_ticket_692, SELECT_BY_TICKET, MODE_TRADES);
ld_200 += OrderLots();
g_ord_open_price_456 = OrderOpenPrice();
g_ord_lots_488 = OrderLots();
}
}
if (ld_200 + NormalizeDouble(g_ord_lots_488 * Multiplier, gd_632) < maxLot) {
if (StepMode == 0) {
if (Ask <= g_ord_open_price_456 - Step * Point && ls_136 == "true" && ls_152 == "true" && ls_160 == "true" && ls_176 == "true" && ls_192 == "false" && ls_88 == "true" &&
ls_104 == "true" && ls_184 == "false") {
g_ord_lots_472 = Multiplier * LotsBuy * OrdersTotalMagicBuy(g_magic_440);
if (TakeProfit > 0.0) g_price_520 = Ask + TakeProfit * Point;
else g_price_520 = 0;
if (StopLoss > 0.0) g_price_536 = Ask - StopLoss * Point;
else g_price_536 = 0;
RefreshRates();
g_ticket_692 = OrderSend(Symbol(), OP_BUY, NormalizeDouble(g_ord_lots_472, gd_632), Ask, 3, g_price_536, g_price_520, "Trader Doni irawan ST", g_magic_440, 0, Blue);
}
}
if (StepMode == 1) {
if (Ask <= g_ord_open_price_456 - (Step + OrdersTotalMagicBuy(g_magic_440) + OrdersTotalMagicBuy(g_magic_440) - 2.0) * Point && ls_136 == "true" && ls_152 == "true" &&
ls_160 == "true" && ls_176 == "true" && ls_192 == "false" && ls_88 == "true" && ls_104 == "true" && ls_184 == "false") {
g_ord_lots_472 = Multiplier * LotsBuy * OrdersTotalMagicBuy(g_magic_440);
if (TakeProfit > 0.0) g_price_520 = Ask + TakeProfit * Point;
else g_price_520 = 0;
if (StopLoss > 0.0) g_price_536 = Ask - StopLoss * Point;
else g_price_536 = 0;
RefreshRates();
g_ticket_692 = OrderSend(Symbol(), OP_BUY, NormalizeDouble(g_ord_lots_472, gd_632), Ask, 3, g_price_536, g_price_520, "Trader Doni irawan ST", g_magic_440, 0, Blue);
}
}
}
}
if (OrdersTotalMagicSell(g_magic_448) > 0) {
for (g_pos_552 = 0; g_pos_552 < OrdersTotal(); g_pos_552++) {
OrderSelect(g_pos_552, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_448) {
g_ticket_696 = OrderTicket();
OrderSelect(g_ticket_696, SELECT_BY_TICKET, MODE_TRADES);
ld_208 += OrderLots();
g_ord_open_price_464 = OrderOpenPrice();
g_ord_lots_496 = OrderLots();
}
}
if (ld_208 + NormalizeDouble(g_ord_lots_496 * Multiplier, gd_632) < maxLot) {
if (StepMode == 0) {
if (Bid >= g_ord_open_price_464 + Step * Point && ls_144 == "true" && ls_152 == "true" && ls_168 == "true" && ls_176 == "true" && ls_192 == "false" && ls_96 == "true" &&
ls_112 == "true" && ls_184 == "false") {
g_ord_lots_480 = Multiplier * LotsSell * OrdersTotalMagicSell(g_magic_448);
if (TakeProfit > 0.0) g_price_528 = Bid - TakeProfit * Point;
else g_price_528 = 0;
if (StopLoss > 0.0) g_price_544 = Bid + StopLoss * Point;
else g_price_544 = 0;
RefreshRates();
g_ticket_696 = OrderSend(Symbol(), OP_SELL, NormalizeDouble(g_ord_lots_480, gd_632), Bid, 3, g_price_544, g_price_528, "Trader Doni irawan ST", g_magic_448, 0, Red);
}
}
if (StepMode == 1) {
if (Bid >= g_ord_open_price_464 + (Step + OrdersTotalMagicSell(g_magic_448) + OrdersTotalMagicSell(g_magic_448) - 2.0) * Point && ls_144 == "true" && ls_152 == "true" &&
ls_168 == "true" && ls_176 == "true" && ls_192 == "false" && ls_96 == "true" && ls_112 == "true" && ls_184 == "false") {
g_ord_lots_480 = Multiplier * LotsSell * OrdersTotalMagicSell(g_magic_448);
if (TakeProfit > 0.0) g_price_528 = Bid - TakeProfit * Point;
else g_price_528 = 0;
if (StopLoss > 0.0) g_price_544 = Bid + StopLoss * Point;
else g_price_544 = 0;
RefreshRates();
g_ticket_696 = OrderSend(Symbol(), OP_SELL, NormalizeDouble(g_ord_lots_480, gd_632), Bid, 3, g_price_544, g_price_520, "Trader Doni irawan ST", g_magic_448, 0, Red);
}
- 15-01-2012, 03:36 PM #1505
هذا هو
كود PHP:int start() {
double ld_200;
double ld_208;
if (RiskMM) {
if (Risk < 0.1 || Risk > 100.0) {
Comment("Invalid Risk Value.");
return (0);
}
LotsBuy =AccountBalance()*Lot/(AccountBalance()-AccountProfit());
LotsSell = AccountBalance()*Lot/(AccountBalance()-AccountProfit());
}
if (RiskMM == FALSE) {
}
if (gd_672 != 0.0 && MinProfit > 0.0) {
if (gd_672 <= AccountBalance() && AccountBalance() <= gd_672 + MinProfit) Multiplier = 1;
else {
if (AccountBalance() < gd_672) {
}
}
}
gd_672 = AccountBalance();
double ld_0 = 0;
ld_0 = AccountEquity() - AccountBalance();
if (ld_0 < gd_684) gd_684 = ld_0;
string ls_8 = "false";
if (UseBasketLoss == TRUE && ld_0 <= (-1 * BasketLoss)) ls_8 = "true";
double ld_16 = 0;
double ld_24 = 0;
string l_symbol_32 = OrderSymbol();
double l_spread_40 = MarketInfo(l_symbol_32, MODE_SPREAD);
double l_digits_48 = MarketInfo(l_symbol_32, MODE_DIGITS);
double l_minlot_56 = MarketInfo(l_symbol_32, MODE_MINLOT);
double l_ima_64 = iMA(Symbol(), 0, MaPeriod, 0, MaMode, MaPrice, 1);
double l_istochastic_72 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_LWMA, 1, MODE_MAIN, 1);
double l_istochastic_80 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_LWMA, 1, MODE_SIGNAL, 1);
string ls_88 = "false";
string ls_96 = "false";
if (l_istochastic_72 > l_istochastic_80) ls_88 = "true";
if (l_istochastic_72 < l_istochastic_80) ls_96 = "true";
string ls_104 = "false";
string ls_112 = "false";
if (ExtendedZone == FALSE && l_istochastic_80 < SimpleZoneBuy) ls_104 = "true";
if (ExtendedZone == FALSE && l_istochastic_80 > SimpleZoneSell) ls_112 = "true";
if (ExtendedZone == TRUE && l_istochastic_80 > StartZoneBuy && l_istochastic_80 < EndZoneBuy) ls_104 = "true";
if (ExtendedZone == TRUE && l_istochastic_80 > StartZoneSell && l_istochastic_80 < EndZoneSell) ls_112 = "true";
string ls_120 = "false";
string ls_128 = "false";
if (ExtendedZone == TRUE && l_istochastic_80 <= CloseLevelDnSell || l_istochastic_80 >= CloseLevelUpSell) ls_120 = "true";
if (ExtendedZone == TRUE && l_istochastic_80 >= CloseLevelUpBuy || l_istochastic_80 <= CloseLevelDnBuy) ls_128 = "true";
string ls_136 = "false";
string ls_144 = "false";
if (Ask > l_ima_64 || MaFilter == FALSE) ls_136 = "true";
if (Bid < l_ima_64 || MaFilter == FALSE) ls_144 = "true";
string ls_152 = "false";
if (MaxSpread == MaxSpread || UseMaxSpread == FALSE) ls_152 = "true";
string ls_160 = "false";
string ls_168 = "false";
if (OrdersTotalMagicBuy(g_magic_440) < MaxBuyOrders || MaxOpenOrders == FALSE) ls_160 = "true";
if (OrdersTotalMagicSell(g_magic_448) < MaxSellOrders || MaxOpenOrders == FALSE) ls_168 = "true";
string ls_176 = "false";
if (AccountEquity() < EquityTarget || UseEquityTarget == FALSE) ls_176 = "true";
string ls_184 = "false";
if (TimeFilter == TRUE && !(Hour() < StartHour || Hour() >= EndHour)) ls_184 = "true";
string ls_192 = "false";
if (CloseFriday == TRUE && DayOfWeek() == 5 && TimeCurrent() >= StrToTime(CloseFridayHour + ":00")) ls_192 = "true";
if (l_minlot_56 == 0.01) {
gd_632 = 2;
if (maxLot <= 0.0) maxLot = MarketInfo(l_symbol_32, MODE_MAXLOT);
}
if (l_minlot_56 == 0.1) {
gd_632 = 1;
if (maxLot <= 0.0) maxLot = AccountBalance() / 2.0 / 1000.0;
}
if (OrdersTotalMagicBuy(g_magic_440) > 0) {
for (g_pos_552 = 0; g_pos_552 < OrdersTotal(); g_pos_552++) {
OrderSelect(g_pos_552, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_440) {
g_ticket_692 = OrderTicket();
OrderSelect(g_ticket_692, SELECT_BY_TICKET, MODE_TRADES);
ld_200 += OrderLots();
g_ord_open_price_456 = OrderOpenPrice();
g_ord_lots_488 = OrderLots();
}
}
if (ld_200 + NormalizeDouble(g_ord_lots_488 * Multiplier, gd_632) < maxLot) {
if (StepMode == 0) {
if (Ask <= g_ord_open_price_456 - Step * Point && ls_136 == "true" && ls_152 == "true" && ls_160 == "true" && ls_176 == "true" && ls_192 == "false" && ls_88 == "true" &&
ls_104 == "true" && ls_184 == "false") {
g_ord_lots_472 = Multiplier * LotsBuy * OrdersTotalMagicBuy(g_magic_440);
if (TakeProfit > 0.0) g_price_520 = Ask + TakeProfit * Point;
else g_price_520 = 0;
if (StopLoss > 0.0) g_price_536 = Ask - StopLoss * Point;
else g_price_536 = 0;
RefreshRates();
g_ticket_692 = OrderSend(Symbol(), OP_BUY, NormalizeDouble(g_ord_lots_472, gd_632), Ask, 3, g_price_536, g_price_520, "Trader Doni irawan ST", g_magic_440, 0, Blue);
}
}
if (StepMode == 1) {
if (Ask <= g_ord_open_price_456 - (Step + OrdersTotalMagicBuy(g_magic_440) + OrdersTotalMagicBuy(g_magic_440) - 2.0) * Point && ls_136 == "true" && ls_152 == "true" &&
ls_160 == "true" && ls_176 == "true" && ls_192 == "false" && ls_88 == "true" && ls_104 == "true" && ls_184 == "false") {
g_ord_lots_472 = Multiplier * LotsBuy * OrdersTotalMagicBuy(g_magic_440);
if (TakeProfit > 0.0) g_price_520 = Ask + TakeProfit * Point;
else g_price_520 = 0;
if (StopLoss > 0.0) g_price_536 = Ask - StopLoss * Point;
else g_price_536 = 0;
RefreshRates();
g_ticket_692 = OrderSend(Symbol(), OP_BUY, NormalizeDouble(g_ord_lots_472, gd_632), Ask, 3, g_price_536, g_price_520, "Trader Doni irawan ST", g_magic_440, 0, Blue);
}
}
}
}
if (OrdersTotalMagicSell(g_magic_448) > 0) {
for (g_pos_552 = 0; g_pos_552 < OrdersTotal(); g_pos_552++) {
OrderSelect(g_pos_552, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_448) {
g_ticket_696 = OrderTicket();
OrderSelect(g_ticket_696, SELECT_BY_TICKET, MODE_TRADES);
ld_208 += OrderLots();
g_ord_open_price_464 = OrderOpenPrice();
g_ord_lots_496 = OrderLots();
}
}
if (ld_208 + NormalizeDouble(g_ord_lots_496 * Multiplier, gd_632) < maxLot) {
if (StepMode == 0) {
if (Bid >= g_ord_open_price_464 + Step * Point && ls_144 == "true" && ls_152 == "true" && ls_168 == "true" && ls_176 == "true" && ls_192 == "false" && ls_96 == "true" &&
ls_112 == "true" && ls_184 == "false") {
g_ord_lots_480 = Multiplier * LotsSell * OrdersTotalMagicSell(g_magic_448);
if (TakeProfit > 0.0) g_price_528 = Bid - TakeProfit * Point;
else g_price_528 = 0;
if (StopLoss > 0.0) g_price_544 = Bid + StopLoss * Point;
else g_price_544 = 0;
RefreshRates();
g_ticket_696 = OrderSend(Symbol(), OP_SELL, NormalizeDouble(g_ord_lots_480, gd_632), Bid, 3, g_price_544, g_price_528, "Trader Doni irawan ST", g_magic_448, 0, Red);
}
}
if (StepMode == 1) {
if (Bid >= g_ord_open_price_464 + (Step + OrdersTotalMagicSell(g_magic_448) + OrdersTotalMagicSell(g_magic_448) - 2.0) * Point && ls_144 == "true" && ls_152 == "true" &&
ls_168 == "true" && ls_176 == "true" && ls_192 == "false" && ls_96 == "true" && ls_112 == "true" && ls_184 == "false") {
g_ord_lots_480 = Multiplier * LotsSell * OrdersTotalMagicSell(g_magic_448);
if (TakeProfit > 0.0) g_price_528 = Bid - TakeProfit * Point;
else g_price_528 = 0;
if (StopLoss > 0.0) g_price_544 = Bid + StopLoss * Point;
else g_price_544 = 0;
RefreshRates();
g_ticket_696 = OrderSend(Symbol(), OP_SELL, NormalizeDouble(g_ord_lots_480, gd_632), Bid, 3, g_price_544, g_price_520, "Trader Doni irawan ST", g_magic_448, 0, Red);
}
- 16-01-2012, 01:59 PM #1506
شكرا جزيلا لك الاخ MR.dollar على حبك لمساعدة اخوانك اتمنى من الله عز و جل جلاله ان يرزقك بالخير
ان شاء الله ويجعله في ميزان حسناتك
لقد قمت بتركيب الكود على الاكسبيرت و عملت تصحيح للاخطاء التي ظهرت
على ما اعتقد ان التصحيح غير كافي لكي يعمل الاكسبيرت كما خطط له
يعني نادرا ما يقوم بتطبيق هده المعادل
و المخطط له هو ان يقوم بتطبيق هده المعادل كل ما تغير البالنس بالموجب او بالسالب
من الافضل ان يقوم بحساب الناتج برقمين بعد الفاصلة عند تطبيق هده المعادلة
على كل حال لقد قمت بفتح موضوع خاص لهدا لالكسبيرت على هده الرابط ارجو ان تطلع عليه
https://forum.arabictrader.com/t137245.htmlآخر تعديل بواسطة Mustapoiha ، 16-01-2012 الساعة 02:09 PM
- 16-01-2012, 03:38 PM #1507
- 19-01-2012, 06:28 PM #1508السلام عليكم ورحمة الله
أستاذ أسامة
هذا الكود لمؤشر TSR Signal Line
كود PHP://+------------------------------------------------------------------+
//| HMA.mq4
//| Copyright © 2006 WizardSerg <[email protected]>, ?? ??????? ForexMagazine #104
//| [email protected]
//| Revised by IgorAD,[email protected] |
//|
//| Personalized by iGoR AKA FXiGoR for the Trend Slope Trading method (T_S_T)
//| Link:
//| contact: [email protected]
//+------------------------------------------------------------------+
#property copyright "MT4 release WizardSerg <[email protected]>, ?? ??????? ForexMagazine #104"
#property link "[email protected]"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//---- input parameters
extern int period=15;
extern int method=3; // MODE_SMA
extern int price=0; // PRICE_CLOSE
//---- buffers
double Uptrend[];
double Dntrend[];
double ExtMapBuffer[];
double prevtrend;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(3);
SetIndexBuffer(0, Uptrend);
//ArraySetAsSeries(Uptrend, true);
SetIndexBuffer(1, Dntrend);
//ArraySetAsSeries(Dntrend, true);
SetIndexBuffer(2, ExtMapBuffer);
ArraySetAsSeries(ExtMapBuffer, true);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,4);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,4);
IndicatorShortName("Execute Line("+period+")");
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
// ???? ????? ?????? ??????
return(0);
}
//+------------------------------------------------------------------+
//| ?????????? ??????? |
//+------------------------------------------------------------------+
double WMA(int x, int p)
{
return(iMA(NULL, 0, p, 0, method, price, x));
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars = IndicatorCounted();
if(counted_bars < 0)
return(-1);
int x = 0;
int p = MathSqrt(period);
int e = Bars - counted_bars + period + 1;
double vect[], trend[];
if(e > Bars)
e = Bars;
ArrayResize(vect, e);
ArraySetAsSeries(vect, true);
ArrayResize(trend, e);
ArraySetAsSeries(trend, true);
for(x = 0; x < e; x++)
{
vect[x] = 2*WMA(x, period/2) - WMA(x, period);
// Print("Bar date/time: ", TimeToStr(Time[x]), " close: ", Close[x], " vect[", x, "] = ", vect[x], " 2*WMA(p/2) = ", 2*WMA(x, period/2), " WMA(p) = ", WMA(x, period));
}
for(x = 0; x < e-period; x++)
ExtMapBuffer[x] = iMAOnArray(vect, 0, p, 0, method, x);
for(x = e-period; x >= 0; x--)
{
trend[x] = trend[x+1];
if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) trend[x] =1;
if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) trend[x] =-1;
if (trend[x]>0)
{ Uptrend[x] = ExtMapBuffer[x];
if (trend[x+1]<0) {Uptrend[x+1]=ExtMapBuffer[x+1];
}
Dntrend[x] = EMPTY_VALUE;
}
else
if (trend[x]<0)
{
Dntrend[x] = ExtMapBuffer[x];
if (trend[x+1]>0) {Dntrend[x+1]=ExtMapBuffer[x+1];}
Uptrend[x] = EMPTY_VALUE;
}
//Print( " trend=",trend[x]);
//Comment(Dntrend[1]+" "+Dntrend[2]+" "+Uptrend[1]+" "+Uptrend[2]);
if (x==0){
if ((trend[1]*prevtrend)<0){Alert("TSR change");}
prevtrend=trend[1];
}
}
return(0);
}
//+------------------------------------------------------------------+
الجزء البدائي مفهوم جيدا
كود PHP:#property copyright "MT4 release WizardSerg <[email protected]>, ?? ??????? ForexMagazine #104"
#property link "[email protected]"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//---- input parameters
extern int period=15;
extern int method=3; // MODE_SMA
extern int price=0; // PRICE_CLOSE
//---- buffers
double Uptrend[];
double Dntrend[];
double ExtMapBuffer[];
double prevtrend;
كود PHP:double ExtMapBuffer[];
double prevtrend;
ثم في جزء int init
كود PHP:int init()
{
IndicatorBuffers(3);
SetIndexBuffer(0, Uptrend);
//ArraySetAsSeries(Uptrend, true);
SetIndexBuffer(1, Dntrend);
//ArraySetAsSeries(Dntrend, true);
SetIndexBuffer(2, ExtMapBuffer);
ArraySetAsSeries(ExtMapBuffer, true);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,4);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,4);
IndicatorShortName("Execute Line("+period+")");
return(0);
}
المؤشر يعطي Uptrend بلون أخضر و Dntrend بلون أحمر
لاكن ما دور
كود PHP:SetIndexBuffer(2, ExtMapBuffer);
ArraySetAsSeries(ExtMapBuffer, true);
حسب ما اعرف يقوم بوظيفته عند نزع المؤشر من الشارت
كود PHP:int deinit()
{
// ???? ????? ?????? ??????
return(0);
}
//+------------------------------------------------------------------+
//| ?????????? ??????? |
//+------------------------------------------------------------------+
double WMA(int x, int p)
{
return(iMA(NULL, 0, p, 0, method, price, x));
}
كود PHP:return(iMA(NULL, 0, p, 0, method, price, x));
كود PHP:int start()
{
int counted_bars = IndicatorCounted();
if(counted_bars < 0)
return(-1);
int x = 0;
int p = MathSqrt(period);
int e = Bars - counted_bars + period + 1;
double vect[], trend[];
if(e > Bars)
e = Bars;
ArrayResize(vect, e);
ArraySetAsSeries(vect, true);
ArrayResize(trend, e);
ArraySetAsSeries(trend, true);
for(x = 0; x < e; x++)
{
vect[x] = 2*WMA(x, period/2) - WMA(x, period);
// Print("Bar date/time: ", TimeToStr(Time[x]), " close: ", Close[x], " vect[", x, "] = ", vect[x], " 2*WMA(p/2) = ", 2*WMA(x, period/2), " WMA(p) = ", WMA(x, period));
}
for(x = 0; x < e-period; x++)
ExtMapBuffer[x] = iMAOnArray(vect, 0, p, 0, method, x);
for(x = e-period; x >= 0; x--)
{
trend[x] = trend[x+1];
if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) trend[x] =1;
if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) trend[x] =-1;
if (trend[x]>0)
{ Uptrend[x] = ExtMapBuffer[x];
if (trend[x+1]<0) {Uptrend[x+1]=ExtMapBuffer[x+1];
}
Dntrend[x] = EMPTY_VALUE;
}
else
if (trend[x]<0)
{
Dntrend[x] = ExtMapBuffer[x];
if (trend[x+1]>0) {Dntrend[x+1]=ExtMapBuffer[x+1];}
Uptrend[x] = EMPTY_VALUE;
}
//Print( " trend=",trend[x]);
//Comment(Dntrend[1]+" "+Dntrend[2]+" "+Uptrend[1]+" "+Uptrend[2]);
if (x==0){
if ((trend[1]*prevtrend)<0){Alert("TSR change");}
prevtrend=trend[1];
}
}
return(0);
}
كود PHP:int counted_bars = IndicatorCounted();
if(counted_bars < 0)
return(-1);
كود PHP:int x = 0;
int p = MathSqrt(period);
int e = Bars - counted_bars + period + 1;
كود PHP:if(e > Bars)
e = Bars;
كود PHP:ArrayResize(vect, e);
ArraySetAsSeries(vect, true);
ArrayResize(trend, e);
ArraySetAsSeries(trend, true);
أرجو من فضلك توضيح ما سبق وجزاك الله خيراآخر تعديل بواسطة cher90 ، 19-01-2012 الساعة 06:48 PM
- 20-01-2012, 08:10 PM #1509
حتى تستطيع فهم الفائده من إضافة متغير أو داله في الكود فيجب أن تراجع أجزاء الكود بشكل كامل وتراجع القيم التي يأخذها هذا المتغير والأماكن التي توضع فيه
فمثلا بالنسبه للجزء الأول
كود PHP:double ExtMapBuffer[];
double prevtrend;
كود PHP:ExtMapBuffer[x] = iMAOnArray(vect, 0, p, 0, method, x);
كود PHP:if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) trend[x] =1;
if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) trend[x] =-1;
يصبح trend=1 وإذا كانت أقل يصبح trend=-1
لماذا شرحت هذا الجزء
لأنه مرتبط بالمتغير الآخر prevtrend
والذي سوف تجده في جزء التنبيه
كود PHP:if ((trend[1]*prevtrend)<0){Alert("TSR change");}
prevtrend=trend[1];
فيتم التنبيه
ثم تصبح قيمة prevtrend=1
بعد ذلك عند تغير لون المؤشر مره أخرى فيصبح ترند هابط فيكون قيمة trend=-1 وسابقا أصبحت
قيمة prevtrend=1 فأيضا يكون الناتج -1*1 < 0 فيتم التنبيه
أي أن هذا المتغير مرتبط بالتنبيه بحيث يكون التنبيه فقط في كل مره يتغير لون المؤشر
الجزء الآخر
كود PHP:double WMA(int x, int p)
{
return(iMA(NULL, 0, p, 0, method, price, x));
}
الأمر return يقوم بحفظ قيمة الداله بحيث في كل مره تقوم بإستدعائها تعود بهذه القيمه كأبسط مثال
كود PHP:double Number()
{
double a=5+3;
return(a);
}
ففي كل مره سأقوم بإستدعاء الداله
كود PHP:Number()
لكن إذا جعلتها بهذا الشكل
كود PHP:double Number()
{
a=5+3;
}
الجزء الآخر
كود PHP:int x = 0;
int p = MathSqrt(period);
int e = Bars - counted_bars + period + 1;
كود PHP:for(x = 0; x < e; x++)
كود PHP:for(int x = 0; x < e; x++)
الجزء الآخير في المشاركه القادمه
- 20-01-2012, 11:09 PM #1510
- 21-01-2012, 02:07 AM #1511
العفو أخي الكريم
الجزء الثاني
كود PHP:int p = MathSqrt(period);
وإستخدمه لاحقا في حساب قيمة الموفينج
كود PHP:ExtMapBuffer[x] = iMAOnArray(vect, 0, p, 0, method, x);
فمثلا الموفينج العادي يقوم بحساب الموفينج أفريج لإغلاق 14 شمعه كمثال
لكن الداله iMAOnArray تقوم بحساب الموفينج أفريج للمصفوفه التي يتم تحديدها مثلا حساب موفينج أفريج لآخر 14 قمه أو حساب موفينج أفريج لمؤشر الآر إس آي وهكذا
لكن في هذا المؤشر فيقوم بحساب الموفينج أفريج للمصفوفه vect
وهي تأخذ القيمه من الكود الآتي
كود PHP:vect[x] = 2*WMA(x, period/2) - WMA(x, period);
كود PHP:int e = Bars - counted_bars + period + 1;
وغالبا نحن نستخدم هذه المعادله في المؤشرات حتى تنجنب حساب قيمة المؤشر لجميع الشموع في كل مره يتحرك السعر حتى لا يكون المؤشر بطيء
مثلا عدد الشموع على الشارت هي 500 شمعه وعدد الشموع التي تم عدها منذ تم وضع المؤشر على الشارت هي 500 أيضا أي أنه لم تتكون شمعه جديده بعد
الآن تكونت شمعه جديده
فأصبحت عدد الشموع 501 وعدد الشموع التي تم عدها هي 500 فيصبح الناتج 501-500 +period + 1
لنفرض أن period=15 وهو المتغير الخارجي الذي يتم تحديده في خصائص المؤشر
فيصبح الناتج 501 -500 + 15 + 1 = 16 شمعه ويقوم بإستخدامها في هذه الحلقه
كود PHP:for(int x = 0; x < e; x++)
كود PHP:if(e > Bars)
e = Bars;
فلنفرض مثلا أن عدد الشموع على الشارت 500 وعدد الشموع التي تم عدها هي 0 أي أن المؤشر تم وضعه على الشارت الآن وسيبدأ بحساباته لأول مره
فسوف تصبح قيمة e= 500 - 0 + 15 + 1
فيكون الناتج 516 لكن عدد الشموع على الشارت أساسا 500 فقط فسوف يحدث خطأ في الحسابات بناء على الحلقه
كود PHP:for(int x = 0; x < e; x++)
الجزء الأخير
كود PHP:ArrayResize
كود PHP:double array1[30];
double array2[15];
كود PHP:double array1[];
double array2[];
كود PHP:ArrayResize(array1,30);
ArrayResize(array2,15);
كود PHP:ArrayResize(vect, e); ArrayResize(trend, e);
أما
كود PHP:ArraySetAsSeries
فمثلا إذا كانت قيمة المصفوفه array1
للشمعه 0 = 14
وللشمعه 1 = 20
وللشمعه 2 = 50
وللشمعه 3 = 120
فعندما أجعل
كود PHP:ArraySetAsSeries(array1,true);
الشمعه 0 = 120
الشمعه 1 = 50
الشمعه 2 = 20
الشمعه 3 = 14
- 21-01-2012, 02:55 PM #1512
بارك الله فيك أستاذ أسامة
شرحت لي
وقلت بأن دوره عكس قيمة المصفوفة لاكن ما الهدف من عكس قيم المصفوفتين vect و trend في المؤشركود PHP:ArraySetAsSeries
وهناك أيضا فوق في الجزء الأول
كود PHP:ArraySetAsSeries(ExtMapBuffer, true);
وسؤال أخر من فضلك
كود PHP:double WMA(int x, int p)
{
return(iMA(NULL, 0, p, 0, method, price, x));
}
أرجو أن لا تكون أسئلتي غبية
وشكرا جزيلااااااااااااا
- 21-01-2012, 10:04 PM #1513
لكل مبرمج طريقته في كتابة الكود وأنصحك إذا وجدت صعوبه في بعض الأكواد جرب تغييرها وتابع النتيجه وما هي التغييرات التي حدثت
هو إستخدم عكس المصفوفه حتى تناسب الكود مثلا في هذا الجزء
كود PHP:if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) trend[x] =1;
if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) trend[x] =-1;
لكن عند إستخدام عكس المصفوفه فسوف يعني
إذا كان قيمة ExtMapBuffer للشمعه الحاليه أكبر من الشمعه التاليه وليس والسابقه
إذا جعلت false بدل true فهذا يعني عدم عكس المصفوفه حاول تجربتها
الجزء الثاني
هذا الكود
كود PHP:double WMA(int x, int p)
{
return(iMA(NULL, 0, p, 0, method, price, x));
}
كود PHP:double WMA(int x, int p)
{
double ma=iMA(NULL, 0, p, 0, method, price, x);
return(ma);
}
كود PHP:double Number()
{
double a=5+3;
return(a);
}
كود PHP:double Number()
{
return(5+3);
}
- 22-01-2012, 01:31 AM #1514
اخي ماستر دولار
اريد ان اجعل الاكسبيرت يعمل على ازواج مختلفة لكن ادا وجد تحقق شروط الصفقة
يقسم المخاطرة على الازواج المحققة للشروط
- 22-01-2012, 02:25 AM #1515
السلام عليكم ورحمة الله
الأخ العزيز أستاذ أسامه جزاك الله خيرا على ما تقدمه ,,,
أنا أحاول أخي تعلم البرمجه وقرأت بعض الموضوعات هنا وهناك و أريدك لو تنصحني ببعض الكتب لتعلم البرمجه من البدايه تكون عندي كمراجع و أريد ملف به أكواد المؤشرات و به المرادفات البرمجيه للكلمات مثل أو ,, و ,, يساوي ,,,, و هكذا إن إمكن ,
أنا قمت ببرمجة إكسبيرت يعتمد على مؤشر الإيشيموكو من المفترض أن يقوم بعمل الآتي :
يفتح صفقة بيع عند كسر السعر لسحابة الكوموسبان لأسفل بشرط خروج خط التنكن سن أيضا من الكوموسبان و يكون خط الشينكوسبان أسفل السعر ,,, و العكس في الشراء ,
الإكسبيرت رقم ١ مفترض أن يعمل على المنصات الرباعيه و الخماسيه لكنه لا يفتح على المنصه نهائيا , أي لا يعمل و جربته على أكثر من منصه عندي .
الإكسبيرت رقم ٢ برمجته بمساعدة برنامج يصنع الإكسبيرت ويتم وضع شرط البيع و الشراء وهو يقوم بالباقي و هذا البرنامج موجود بموضع إصنع إكسبيرتك بنفسك للأخ ram22 و هذا يعمل عند وضعه على أي منصه لكنه لا يفتح صفقات بنفس الطريقه و قد لا يفتح صفقات ,,,
رجاء الإطلاع على الإكسبيرتين و إخباري بالخطأ ,
وشكرا جزيلا
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM