Jump to content

Recommended Posts

  • 2 weeks later...
Posted

//#include <stdlib.mqh>

#import "stdlib.ex4"

string ErrorDescription(int a0);

#import

 

extern int OpenOrdersLimit33 = 3;

extern double BuyLots45 = 0.1;

extern int BuySlippage45 = 2;

extern int BuyStoploss45 = 0;

extern int BuyTakeprofit45 = 20;

extern int PriceOffset45 = 20;

extern int Expiration45 = 240;

extern int OpenOrdersLimit22 = 3;

extern double SellLots46 = 0.1;

extern int SellSlippage46 = 2;

extern int SellStoploss46 = 0;

extern int SellTakeprofit46 = 30;

extern int PriceOffset46 = 20;

extern int Expiration46 = 240;

double gd_140 = 1.0;

bool gi_148 = FALSE;

string gs_unused_152 = "\n";

int g_digits_160 = 4;

int gi_unused_164 = 0;

int gi_unused_168 = 0;

extern bool Op_Buy = TRUE;

extern bool Op_Sell = TRUE;

double gd_180 = 0.002;

int g_time_188 = 0;

int gi_192 = 0;

 

int init() {

g_digits_160 = Digits;

Comment("");

return (0);

}

 

int start() {

if (Bars < 10) {

Comment("Not enough bars");

return (0);

}

if (gi_148 == TRUE) {

Comment("EA Terminated.");

return (0);

}

f0_16();

return (0);

}

 

void f0_16() {

if (g_digits_160 == 3 || g_digits_160 == 5 && 1) gd_140 = 10;

f0_2();

f0_21();

f0_12();

f0_1();

}

 

void f0_2() {

f0_19();

}

 

void f0_19() {

if (g_time_188 < Time[0]) {

g_time_188 = Time[0];

f0_6();

f0_8();

}

}

 

void f0_6() {

if (iMA(NULL, 0, 20, 0, MODE_LWMA, PRICE_CLOSE, 0) < iMA(NULL, 0, 20, 0, MODE_EMA, PRICE_CLOSE, 0) && Close[0] < Close[1]) f0_22();

}

 

void f0_22() {

if (iCustom(NULL, 0, "Support & Resistance", 0, 1) - iCustom(NULL, 0, "Support & Resistance", 1, 1) < gd_180) {

f0_5();

f0_9();

}

}

 

void f0_5() {

if (Op_Buy == TRUE) f0_0();

}

 

void f0_0() {

int count_0 = 0;

for (int pos_4 = OrdersTotal() - 1; pos_4 >= 0; pos_4--) {

if (OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == 1) count_0++;

} else Print("OrderSend() error - ", ErrorDescription(GetLastError()));

}

if (count_0 < OpenOrdersLimit33) f0_17();

}

 

void f0_17() {

int is_deleted_4;

for (int pos_0 = OrdersTotal() - 1; pos_0 >= 0; pos_0--) {

if (OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES)) {

if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 2) {

is_deleted_4 = OrderDelete(OrderTicket(), Yellow);

if (is_deleted_4 == 0) Print("OrderDelete() error - ", ErrorDescription(GetLastError()));

}

}

}

f0_13();

}

 

void f0_13() {

int datetime_0 = TimeCurrent() + 60 * Expiration45;

double price_4 = NormalizeDouble(Ask, g_digits_160) + PriceOffset45 * gd_140 * Point;

double price_12 = price_4 - BuyStoploss45 * gd_140 * Point;

if (BuyStoploss45 == 0) price_12 = 0;

double price_20 = price_4 + BuyTakeprofit45 * gd_140 * Point;

if (BuyTakeprofit45 == 0) price_20 = 0;

if (Expiration45 == 0) datetime_0 = 0;

int ticket_28 = OrderSend(Symbol(), OP_BUYSTOP, BuyLots45, price_4, BuySlippage45, price_12, price_20, "vol_pips", 2, datetime_0, Blue);

if (ticket_28 == -1) Print("OrderSend() error - ", ErrorDescription(GetLastError()));

}

 

void f0_9() {

if (Op_Sell == TRUE) f0_14();

}

 

void f0_14() {

int count_0 = 0;

for (int pos_4 = OrdersTotal() - 1; pos_4 >= 0; pos_4--) {

if (OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == 2) count_0++;

} else Print("OrderSend() error - ", ErrorDescription(GetLastError()));

}

if (count_0 < OpenOrdersLimit22) f0_11();

}

 

void f0_11() {

int is_deleted_4;

for (int pos_0 = OrdersTotal() - 1; pos_0 >= 0; pos_0--) {

if (OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES)) {

if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 1) {

is_deleted_4 = OrderDelete(OrderTicket(), White);

if (is_deleted_4 == 0) Print("OrderDelete() error - ", ErrorDescription(GetLastError()));

}

}

}

f0_18();

}

 

void f0_18() {

int datetime_0 = TimeCurrent() + 60 * Expiration46;

double price_4 = NormalizeDouble(Bid, g_digits_160) - PriceOffset46 * gd_140 * Point;

double price_12 = price_4 + SellStoploss46 * gd_140 * Point;

if (SellStoploss46 == 0) price_12 = 0;

double price_20 = price_4 - SellTakeprofit46 * gd_140 * Point;

if (SellTakeprofit46 == 0) price_20 = 0;

if (Expiration46 == 0) datetime_0 = 0;

int ticket_28 = OrderSend(Symbol(), OP_SELLSTOP, SellLots46, price_4, SellSlippage46, price_12, price_20, "vol_pips", 1, datetime_0, Red);

if (ticket_28 == -1) Print("OrderSend() error - ", ErrorDescription(GetLastError()));

}

 

void f0_8() {

if (iMA(NULL, 0, 20, 0, MODE_LWMA, PRICE_CLOSE, 0) > iMA(NULL, 0, 20, 0, MODE_EMA, PRICE_CLOSE, 0) && Close[0] > Close[1]) f0_22();

}

 

void f0_21() {

string ls_0 = "\nExecuted : " + gi_192

+ "\n"

+ "Spread: " + DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD) / gd_140, 2)

+ "\n"

+ "------------------------------------------------\n" + "ACCOUNT INFORMATION:\n"

+ "\n"

+ "Account Name: " + AccountName()

+ "\n"

+ "Account Leverage: 1:" + DoubleToStr(AccountLeverage(), 0)

+ "\n"

+ "Account Balance: " + DoubleToStr(AccountBalance(), 2)

+ "\n"

+ "Account Equity: " + DoubleToStr(AccountEquity(), 2)

+ "\n"

+ "Free Margin: " + DoubleToStr(AccountFreeMargin(), 2)

+ "\n"

+ "Used Margin: " + DoubleToStr(AccountMargin(), 2)

+ "\n"

+ "------------------------------------------------\n";

Comment(ls_0);

gi_192++;

}

 

void f0_12() {

if (Open[1] > Close[1]) f0_7();

}

 

void f0_7() {

bool li_0 = FALSE;

for (int pos_4 = OrdersTotal() - 1; pos_4 >= 0; pos_4--) {

if (OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES)) {

if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 2) li_0 = TRUE;

} else Print("OrderSelect() error - ", ErrorDescription(GetLastError()));

}

if (li_0) f0_10();

}

 

void f0_10() {

double ld_0 = 0;

for (int pos_8 = OrdersTotal() - 1; pos_8 >= 0; pos_8--) {

if (OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES)) {

if ((OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 2) || 0) ld_0 += OrderProfit();

} else Print("OrderSelect() error - ", ErrorDescription(GetLastError()));

}

if (ld_0 > 0.0) f0_4();

}

 

void f0_4() {

int lia_8[30][2];

int is_closed_16;

int order_total_0 = OrdersTotal();

int li_4 = 0;

for (int pos_12 = 0; pos_12 < order_total_0; pos_12++) {

OrderSelect(pos_12, SELECT_BY_POS, MODE_TRADES);

if (OrderType() != OP_BUY || OrderSymbol() != Symbol() || OrderMagicNumber() != 2) continue;

lia_8[li_4][0] = OrderOpenTime();

lia_8[li_4][1] = OrderTicket();

li_4++;

}

if (li_4 > 1) {

ArrayResize(lia_8, li_4);

ArraySort(lia_8);

}

for (pos_12 = 0; pos_12 < li_4; pos_12++) {

if (OrderSelect(lia_8[pos_12][1], SELECT_BY_TICKET) == TRUE) {

is_closed_16 = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1, Green);

if (is_closed_16 == 0) Print("OrderClose() error - ", ErrorDescription(GetLastError()));

}

}

}

 

void f0_1() {

if (Open[1] < Close[1]) f0_15();

}

 

void f0_15() {

bool li_0 = FALSE;

for (int pos_4 = OrdersTotal() - 1; pos_4 >= 0; pos_4--) {

if (OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES)) {

if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 1) li_0 = TRUE;

} else Print("OrderSelect() error - ", ErrorDescription(GetLastError()));

}

if (li_0) f0_20();

}

 

void f0_20() {

double ld_0 = 0;

for (int pos_8 = OrdersTotal() - 1; pos_8 >= 0; pos_8--) {

if (OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES)) {

if ((OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 1) || 0) ld_0 += OrderProfit();

} else Print("OrderSelect() error - ", ErrorDescription(GetLastError()));

}

if (ld_0 > 0.0) f0_3();

}

 

void f0_3() {

int lia_8[30][2];

int is_closed_16;

int order_total_0 = OrdersTotal();

int li_4 = 0;

for (int pos_12 = 0; pos_12 < order_total_0; pos_12++) {

OrderSelect(pos_12, SELECT_BY_POS, MODE_TRADES);

if (OrderType() != OP_SELL || OrderSymbol() != Symbol() || OrderMagicNumber() != 1) continue;

lia_8[li_4][0] = OrderOpenTime();

lia_8[li_4][1] = OrderTicket();

li_4++;

}

if (li_4 > 1) {

ArrayResize(lia_8, li_4);

ArraySort(lia_8);

}

for (pos_12 = 0; pos_12 < li_4; pos_12++) {

if (OrderSelect(lia_8[pos_12][1], SELECT_BY_TICKET) == TRUE) {

is_closed_16 = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1, Green);

if (is_closed_16 == 0) Print("OrderClose() error - ", ErrorDescription(GetLastError()));

}

}

}

 

int deinit() {

return (0);

}

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...