Nasıl kodlanır? - sayfa 267

 
christinaLi:
Bahsettiğiniz bu fonksiyona yardımcı olmak isterim ama görünüşe göre mantığınızı bir türlü çözemiyorum. Bunun stratejinin diğer mantığıyla gerçekten hiçbir ilgisi yok.

Ben sadece bunu bilmek istiyorum.

1.4110'dan 1 lot alım ve 1.4200'den 2 lot satışınız varsa. Hangi fiyatta 6 pip kazancınız olduğunu düşünüyorsunuz?

Merhaba Christina,

benim pozisyon yönetimimde asla, 2 lot satış açılmadan 1 alış lotu kârla kapanır.(asla satmaz çünkü 1. alım lotu kârla kapanmıştır, bir sonraki sinyali bekleyin)

örneğinize dönelim:

ancak yaklaşık 1,4175'te bir çizgi var, burada 2 satış lotu (kar yukarı, piyasa aşağı) ve 1 satın alma lotu (kar azalıyor, piyasa düşüyor) fiyat eşit (başabaş 0), yani 1,4169'da 6 pip kâr hazır - o zaman ben tüm siparişleri kapatır

IX

 
ixbone:
Merhaba Christina,

benim pozisyon yönetimimde asla, 2 lot satış açılmadan 1 alış lotu kârla kapanır.(asla satmaz çünkü 1. alım lotu kârla kapanmıştır, bir sonraki sinyali bekleyin)

örneğinize dönelim:

ancak yaklaşık 1,4175'te bir çizgi var, burada 2 satış lotu (kar yukarı, piyasa aşağı) ve 1 satın alma lotu (kar azalıyor, piyasa düşüyor) fiyat eşit (başabaş 0), yani 1,4169'da 6 pip kâr hazır - o zaman ben tüm siparişleri kapatır

IX

Çünkü benim örneğim 1.4110 ve 1.4200. İşte benim hesaplamam:

Her şeyden önce, 1.4170'te (spread'leri hesaba katmadan) başa baş durumdayız. Şimdi her biri 30 piplik kazançla 2 lot satışımız ve 60 piplik kayıpla 1 lot alımımız var, bu yüzden dolar bazında bile kırın.

Tam olarak benim örneğime göre, 1.4164'te toplamda 6 pip kazancınız olmalıdır.

1.4164'te (spread'leri hesaba katmadan) her biri 36 piplik kazançla 2 lot satışımız ve 54 piplik kayıpla 1 lot alımımız var, yani satışlardan 72 pip kazanç ve alımlardan 54 pip kayıp. Genel olarak, işlem grubu için, 18 piplik bir kazançla 3 lotunuz var. Bu yüzden şimdi 6 pip kazancınız olduğunu düşünmek daha mantıklı.

Ancak, yayılmalar nedeniyle işler yine karmaşıklaşacak. Çünkü teklif 1.4164 ise, belki 1.4166 isteyin, bu nedenle satışlarınızın her biri yalnızca 34 pip kazanır. Alım satım grubu için genel olarak, 14 pip kazanç ile 3 lotunuz var. Yani şimdi aslında 4.7 pip kazancınız var.

Bu örneği bir adım daha ileri götürürsem, 2 alış ve 3 satışımız varsa. Sonra 1.4164'te başa baş gelirsiniz.

Yayılmaları dikkate almamız gerekmiyorsa, her lotta 5 pip kazanç elde etmek için toplam 30 pip kazanca ihtiyacımız var. Yani 6 pip kazanç 1.4134 fiyatında olur, bu doğru mu?

Sisteminiz muhtemelen bu tür bir duruma sahip olmayacak, almak istediğim ilke bu. Yukarıdaki hesaplamaya katılıyor musunuz?

 
christinaLi:
Çünkü benim örneğim 1.4110 ve 1.4200. İşte benim hesaplamam:

Her şeyden önce, 1.4170'de (spread'leri hesaba katmadan) başa baş durumdayız. Şimdi her biri 30 piplik kazançla 2 lot satışımız ve 60 piplik kayıpla 1 lot alımımız var, bu yüzden dolar bazında bile kırın.

Tam olarak benim örneğime göre, 1.4164'te toplamda 6 pip kazancınız olmalıdır.

1.4164'te (spread'leri hesaba katmadan) her biri 36 piplik kazançla 2 lot satışımız ve 54 piplik kayıpla 1 lot alımımız var, yani satışlardan 72 pip kazanç ve alımlardan 54 pip kayıp. Genel olarak, işlem grubu için, 18 piplik bir kazançla 3 lotunuz var. Bu yüzden şimdi 6 pip kazancınız olduğunu düşünmek daha mantıklı.

Ancak, yayılmalar nedeniyle işler yine karmaşıklaşacak. Çünkü teklif 1.4164 ise, belki 1.4166 isteyin, bu nedenle satışlarınızın her biri yalnızca 34 pip kazanır. Alım satım grubu için genel olarak, 14 pip kazanç ile 3 lotunuz var. Yani şimdi aslında 4.7 pip kazancınız var.

Bu örneği bir adım daha ileri götürürsem, 2 alış ve 3 satışımız varsa. Sonra 1.4164'te başa baş gelirsiniz.

Yayılmaları dikkate almamız gerekmiyorsa, her lotta 5 pip kazanç elde etmek için toplam 30 pip kazanca ihtiyacımız var. Yani 6 pip kazanç 1.4134 fiyatında olur, bu doğru mu?

Sisteminiz muhtemelen bu tür bir duruma sahip olmayacak, almak istediğim ilke bu. Yukarıdaki hesaplamaya katılıyor musunuz?

Christina,

katılıyorum, her iki hesaplamada da %100 haklısın!

 

Merhaba Michael,

Son birkaç gündür çok meşgulüm, bunu zaten yaptım ama bir araya getirmek için daha fazla zamana ihtiyacım var. Önümüzdeki birkaç gün içinde bunu yapmak için biraz zaman bulduğumda burada yayınlayacağım. Christina

 
 
christinaLi:
Merhaba Michael, son birkaç gündür çok meşgulüm, bunu zaten yaptım ama bir araya getirmek için daha fazla zamana ihtiyacım var. Önümüzdeki birkaç gün içinde bunu yapmak için biraz zaman bulduğumda burada yayınlayacağım. Christina

Merhaba Christina,

sorun değil, acele etmeyin, önerilerinizi her zaman takdir ediyorum!

Michael

 
 

yardıma ihtiyacım var

Herkese merhaba !

Bu benim fikrim: Ayrı_pencerede 2 gösterge arabelleğine ihtiyacım var,1 devupBuffer[];2 devdwBuffer[]. Örneğin, beş dijital 1,2,3,4,5 varsa, ortalamaları 3'tür. O zaman veriler 3 4 ve 5 ortalamasından daha büyüktür devupBuffer={【(4-average)*(4-average)】+【 (5-ortalama)*(5-ortalama)】}/Standart sapma(1,2,3,4,5)*Standart sapma(1,2,3,4,5).Veriler ortalama 3'ten az 1 ve 2 devdwBuffer={【(1-ortalama)*(1-ortalama)】+【(2-ortalama)*(2-ortalama)】}/Standart sapma(1,2,3,4,5)*Standart sapma(1,2,3,4,5).

 

neden bu EA alıp satamıyor?

merhaba, Meta ile bu programlamada gerçekten yeniyim... lütfen yardım edin...

Stokastikte 25 ve 75 olmak üzere iki seviyeli bir sistemle çalışıyorum...

Sadece TEK ticaret...

ANA ve SİNYAL 25'in altında ve kesişiyorsa, SATIN AL.

ANA ve SİNYAL 25'in üzerine çıkarsa, KAPAT SATIN AL.

ANA ve SİNYAL 75'in üzerindeyse ve kesişiyorsa, SATIN.

ANA ve SİNYAL kesişirse (75'in altında olmasına gerek yok), KAPAT SAT.

bu kadar...

//+------------------------------------------------------------------+

//| StochCross.mq4 |

//| RobertEli |

//| http://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "RobertEli"

#property link "http://www.metaquotes.net"

//--- input parameters

extern double TakeProfit=250.0;

extern double Lots=0.01;

extern double TrailingStop=35.0;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

int Confirm (double line1, double line2, int level_buy, int level_sell)

{

static int confirmation = 0;

if ((line1 < level_buy) && (line2 < level_buy)) confirmation = 1; //confirm BUY, when two lines are below level_buy

if ((line1 > level_sell) && (line2 > level_sell)) confirmation = 2; //confirm SELL, when two lines are above level_sell

if ((line1 > level_buy) && (line2 > level_buy)) confirmation = 3; //confirm CLOSE BUY, when two lines are above level_buy

if ((line1 < level_sell) && (line2 < level_sell)) confirmation = 4; //confirm CLOSE SELL, when two lines are below level_sell

//if ((line1 > level_buy_close) && (line2 > level_buy_close)) confirmation = 3; //confirm CLOSE BUY

//if ((line1 < level_sell_close) && (line2 < level_sell_close)) confirmation = 4; //confirm CLOSE SELL

//else return (0);

return (confirmation);

}

int Crossed (double line1, double line2)

{

static int last_direction = 0;

static int current_direction = 0;

if (line1 > line2) current_direction = 1; //UP

if (line1 < line2) current_direction = 2; //DOWN

if (current_direction != last_direction) //changed direction

{

last_direction = current_direction;

return (last_direction);

}

else

{

return (0);

}

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

int cnt, ticket;

double Stoch_main, Stoch_sign;

if (Bars < 100)

{

Print("BARS less than 100");

return (0);

}

if (TakeProfit < 10)

{

Print("TakeProfit less than 10");

return (0);

}

/*

Stoch_main = iStochastic (NULL,15,21,8,13,MODE_SMA,1,MODE_MAIN,0);

Stoch_sign = iStochastic (NULL,15,21,8,13,MODE_SMA,1,MODE_SIGNAL,0);

*/

Stoch_main = iStochastic (NULL,0,30,20,12,MODE_SMA,1,MODE_MAIN,0);

Stoch_sign = iStochastic (NULL,0,30,20,12,MODE_SMA,1,MODE_SIGNAL,0);

/*

Stoch_main = iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);

Stoch_sign = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);

*/

int isCrossed = Crossed(Stoch_main,Stoch_sign);

int isConfirmed = Confirm(Stoch_main,Stoch_sign,25,75);

int total = OrdersTotal();

if (total == 0)

{

if ((isCrossed == 1) && (isConfirmed == 1))

{

ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"Buy at " + Ask,24848,0,Green);

if (ticket > 0)

{

if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY Order opened: " +Ask ,OrderOpenPrice());

else Print ("Error Opening BUY Order: ", GetLastError());

return (0);

}

}

if ((isCrossed == 2) && (isConfirmed == 2))

{

ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"Sell at " + Bid,24848,0,Red);

if (ticket > 0)

{

if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL Order opened: " +Bid ,OrderOpenPrice());

else Print ("Error Opening SELL Order: ", GetLastError());

return (0);

}

}

return (0);

}

else

{

for (cnt = total; cnt < 0; cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderType() <= OP_SELL && OrderSymbol() == Symbol())

{

if (OrderType() == OP_BUY) //the trade was a Buy position

{ //check for closing)

if ((isCrossed == 2) && (isConfirmed == 3))

//if (isCrossed == 2)

{ //change of direction

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //close Buy position

return (0);

}

}

else // the trade was a SELL position

{

//should it be closed?

//if ((isCrossed == 1) && (isConfirmed == 4))

if (isCrossed == 1) //Closing the SELL need not to be below the level_buy... it's very dangerous to wait for it...

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //Sell position is now closed

return (0);

}

}

}

}

}

//----

return(0);

}

//+------------------------------------------------------------------+
 

EA yapması gerekeni yapamıyor, YARDIM!

merhaba, bu mq4 programlamasında gerçekten yeniyim ama codersgurus eğitimlerini okudum (çok teşekkür ederim!) bu yüzden bir şeyler anlayabildiğimi düşünüyorum... Ancak, HAREKETLİ ORTALAMALARa dayalı bu EA'yı yaptım.. AMA KORKUNÇ ŞEKİLDE OLMASI GEREKEN ŞEKİLDE ÇALIŞMIYOR!

burada kurallar çok basit...

1. MA_04_1H (1 saatlik zaman aralığı için 4 hareketli ortalama periyodu anlamına gelir) MA_14_1H'nin üzerinde kesişir,

MA_04_4H'nin MA_14_4H'nin üzerinde olduğunu onaylayın (eğilim yukarı doğru) ------> SATIN AL!

2. MA_04_1H, MA_14_1H'nin altından geçiyor,

MA_04_4H'nin MA_14_4H'nin altında olduğunu onaylayın (eğilim aşağı yönlü)------> SAT!

3. MA_04_1H, MA_14_1H ile kesiştiğinde, o siparişi kapatın (kural #1 ve #2 verilen yeni bir sipariş başlatabilir)

4. sadece bir işlem... (AL ise, bu AL'ı kapatın. ondan sonra gerekirse SATIN)

2 fonksiyon yaptım: Çapraz ve Onaylandı.

Çapraz 1 saatlik zaman dilimi içindir.

Onaylandı, 4 saatlik zaman dilimi içindir.

kimse bu şeyi ayıklamama yardım edebilir mi?

//+------------------------------------------------------------------+

//| MACross1TradeOnly.mq4 |

//| RobertEli |

//| |

//+------------------------------------------------------------------+

// this will work on MA_04, and MA__14

#property copyright "RobertEli"

#property link ""

extern double Lots = 0.01;

extern int stoploss_value = 10; // $10

bool up = 0, //UP direction, when MA_04 is above MA_14

down = 0, //DOWN direction, when MA_14 is above MA_04

change = 0, //when the MA_04 and MA_14 cross

firsttime = true; //first time for direction_prev

int direction_curr = 0; // 1 if UP, 2 if down...

int direction_prev = 0; // this will hold previous value of direction_curr

int direction_trend= 0; // trend direction for confirmation

int cross = 0; // if direction_curr and direction_prev changes course

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

int Crossed (double line1, double line2)

{

static int last_direction = 0;

static int current_direction = 0;

if (line1 - line2 > 0)//(line1 > line2)

{

current_direction = 1; //UP

if (firsttime == true)

{

current_direction = 0;

last_direction = 1;

firsttime = false;

return (0);

}

}

if (line1 - line2 < 0)//(line1 < line2)

{

current_direction = 2; //DOWN

if (firsttime == true)

{

current_direction = 0;

last_direction = 2;

firsttime = false;

return (0);

}

}

if ((current_direction != last_direction) && (firsttime == false)) //changed direction

{

last_direction = current_direction;

return (last_direction);

}

else

{

return (last_direction);

}

}

int Confirmed (double line1, double line2)

{

int trend;

if (line1 > line2) trend = 1; // trend direction is UP

if (line1 < line2) trend = 2; // trend direction is DOWN

return (trend);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

int cnt,ticket, total;

//double MA_04, MA_07 , MA_14 , MA_21 , MA_28; //MOVING AVERAGES with their corresponding period

if (Bars < 100) { Print ("Bars less than 100."); return (0); }

double MA_04_1H = iMA(NULL,60,04,0,MODE_EMA,PRICE_CLOSE,0);

double MA_14_1H = iMA(NULL,60,14,0,MODE_EMA,PRICE_CLOSE,0);

double MA_04_4H = iMA(NULL,240,04,0,MODE_EMA,PRICE_CLOSE,0);

double MA_14_4H = iMA(NULL,240,14,0,MODE_EMA,PRICE_CLOSE,0);

//double stoploss = stoploss_value / (Lots * 100000);

//new code from v_1

cross = Crossed (MA_04_1H,MA_14_1H); // =1 for UP, =2 for DOWN

direction_trend = Confirmed (MA_04_4H, MA_14_4H); // =1 for UP, =2 for DOWN

total = OrdersTotal();

if (total == 0)

{

if((cross == 1) && (direction_trend == 1))

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,/*Ask-stoploss*/0,0,"Buy at: "+ Ask,12345,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice(),",<<<<",OrderStopLoss());

}

else Print("Error opening BUY order : ",GetLastError());

cross = 0;

return(0);

}

if((cross == 2) && (direction_trend == 2))

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,/*Bid+stoploss*/0,0,"Sell at: "+ Bid,12345,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

cross = 0;

return(0);

}

}

if (total == 1)

{

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

// bool no_buy_sell = ((OrderTakeProfit() 0));

if ((OrderType()==OP_BUY) && (cross == 2) )// && (no_buy_sell))

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position

//OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+stoploss,0,"Sell at: "+ Bid,12345,0,Red);

return (0);

}

else if ((OrderType()==OP_SELL) && (cross == 1) )// && (no_buy_sell))

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position

//OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-stoploss,0,"Buy at: "+ Ask,12345,0,Green);

return (0);

}

}

}

else return (0);

//----

return(0);

}

//+------------------------------------------------------------------+

lütfen bir önceki gönderiyi dikkate almayın... bu fikri çöpe attım... şu anda bunun üzerinde çalışıyorum... o yüzden lütfen yardım edin...