Сырые идеи - страница 5

 

Стоп-лосс для советника

Извините за такой заголовок, но мне нужна команда тейк-профита. Я понятия не имею, как кодировать, но хотел бы добавить тейк-профит к этому советнику. Ниже приведен код, пожалуйста, добавьте тейк-профит там, где это необходимо. Еще раз спасибо

Рэй

extern double MaximumRisk =0.02; //% баланса счета для риска на позицию

extern double DecreaseFactor =3; //разделитель (уменьшитель) размера лота во время полосы убытков

extern double Lot.Margin =50; //Маржа для 1 лота

extern int Magic =69;

extern string comment ="m icwr ea";

double spread; spread =Ask-Bid;

int slip; slip =spread/Point;

int RequiredWaveHeight,b,s,cnt,ticket;

double rsi,SL,ICWR,ICWRv0,awp1,awp2,active.high,active.low,high.c,high.r,low.r,low.c;

datetime awt1,awt2,a.high.shift,a.low.shift,shift;

int init(){return(0);}

int deinit(){return(0);}

int start(){

PosCounter();

rsi=iRSI(Symbol(),1440,14,PRICE_CLOSE,0);

if(Period()==5) {RequiredWaveHeight=40;SL=50*Point;}

if(Period()==240) {RequiredWaveHeight=150;SL=100*Point;}

ICWR=iCustom(Symbol(),Period(), "ICWR",10,5,3,RequiredWaveHeight,0,0);

ICWRv0=iCustom(Symbol(),Period(), "ICWR v0", "ZigZag",10,5,3, "ActiveWave",50,RequiredWaveHeight,0,0);

awt1=ObjectGet("Activewave",OBJPROP_TIME1);

awp1=ObjectGet("Activewave",OBJPROP_PRICE1);

awt2=ObjectGet("Activewave",OBJPROP_TIME2);

awp2=ObjectGet("Activewave",OBJPROP_PRICE2);

if(awp1>awp2) {

active.high=awp1;

a.high.shift=iBarShift(Symbol(),Period(),awt1);

active.low=awp2;

a.low.shift=iBarShift(Symbol(),Period(),awt2);}

else {

active.high=awp2;

a.high.shift=iBarShift(Symbol(),Period(),awt2);

active.low=awp1;

a.low.shift=iBarShift(Symbol(),Period(),awt1);}

if(a.high.shift<a.low.shift) shift=a.high.shift;

else shift=a.low.shift;

high.c=NormalizeDouble(active.low+((active.high-active.low)*0.75),Digits);

high.r=NormalizeDouble(active.low+((active.high-active.low)*0.618),Digits);

low.r=NormalizeDouble(active.low+((active.high-active.low)*0.382),Digits);

low.c=NormalizeDouble(active.low+((active.high-active.low)*0.25),Digits);

if(rsi>50) {

for(int i=0;i<shift;i++) {

if(Closelow.r && Low[1]>high.c && b==0) {

ticket1=OrderSend(Symbol(),OP_SELL,1.0,Bid,0,Bid+20*Point,Bid-30*Point, "комментарий эксперта",255,0,CLR_NONE);

OP_BUY,

LotsOptimized(),

Ask,

slip,

Ask-SL,

0,

Период()+коммент,

Магия,0,Синий);

if(ticket>0) {

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{ Print(ticket); }

else Print("Ошибка при открытии ордера BuyStop: ",GetLastError());

return(0);}}}}

if(rsi<50) {

for(int ii=0;ii<shift;ii++) {

if(Closelow.r && High[1]<low.c && s==0) {

ticket=OrderSend(Symbol(),

OP_SELL,

LotsOptimized(),

Bid,

slip,

Bid+SL,

0,

Период()+коммент,

Magic,0,Orange);

if(ticket>0) {

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{ Print(ticket); }

else Print("Ошибка при открытии ордера SellStop: ",GetLastError());

return(0);}}}}

if(b>0) {

for(int c=0;c<shift;c++) {

if(High[1]<low.c) {

OrderClose(ticket,OrderLots(),Bid,slip,0);}}}

if(s>0) {

for(int cc=0;cc<shift;cc++) {

if(Low[1]>high.c) {

OrderClose(ticket,OrderLots(),Ask,slip,0);}}}

comments();

return(0);}

//+---------------------------FUNCTIONS------------------------------+

void PosCounter() {

b=0;s=0;ticket=0;

for(cnt=0;cnt<=OrdersTotal();cnt++) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {

if(OrderType()==OP_SELL) {

ticket=OrderTicket();

s++;}

if(OrderType()==OP_BUY) {

ticket=OrderTicket();

b++;} }}}

void comments() {

if(MarketInfo(Symbol(),MODE_SWAPLONG)>0) string swap="лонги.";

else swap="шорты";

if(MarketInfo(Symbol(),MODE_SWAPLONG)<0 && MarketInfo(Symbol(),MODE_SWAPSHORT)<0) swap="ваш брокер. ";

Comment("Last Tick: ",TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),"\n",

"Своп предпочитает ",swap,"\n",

"Дневной RSI= ",rsi,"\n",

"Активный максимум: ",active.high,"\n",

"High shift: ",a.high.shift,"\n",

"Подтверждение высокого уровня: ",high.c,"\n",

"High Retrace: ",high.r,"\n",

"Low Retrace: ",low.r,"\n",

"Низкое подтверждение: ",low.c,"\n",

"Активный низкий: ",активный.низкий,"\n",

"Low shift: ",a.low.shift); }

double LotsOptimized() {

двойной лот;

int orders=HistoryTotal();

int losses=0;

lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/Lot.Margin,2);

if(DecreaseFactor>0) {

for(int i=orders-1;i>=0;i--) {

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка в истории!"); break; }

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

if(OrderProfit()>0) break;

if(OrderProfit()<0) losses++; }

if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,2); }

if(lot<0.01) lot=0.01;

return(lot); }//end LotsOptimized

 

Не обращай внимания...

Неважно...

я скачал TEMPLATE catfx и все появилось...

Не знаю.

 

быстрый вопрос... какие данные дает вам INDinverse?

У меня есть этот график, но я не могу расшифровать, что он мне говорит...

Я сделал поиск, но не нашел описания.

СПАСИБО ЗА ПОДДЕРЖКУ

Файлы:
 

Новый график отключает советника?

Здравствуйте,

(Это такой замечательный форум, скоро мне будет чем поделиться!).

Я играю с примером CodersGuru "Your First Expert Advisor" из его курса MQL4...

Я заметил кое-что, что, я надеюсь, имеет решение... После загрузки советника на график 30M... он открыл (короткий) ордер... Я изменил его код, чтобы протестировать свою стратегию выхода (простой крест на более низком временном периоде)...

Крест пришел и ушел (и статус печати, и мой код был правильным), НО, в то время я был на графике 15M... означает ли это, что я деактивировал советника (поэтому мой код/логика не сработали)?

Если да, то есть ли способ обойти это... Я бы хотел переходить на другие таймфреймы и обратно... не отключая работающего советника.

Заранее спасибо за ответы.

-charliev

 

Эффективность системы пропорциональна росту числа ее пользователей?

Считаете ли вы, что система будет набирать или терять свою эффективность по мере увеличения числа людей, которые ее применяют?

Кажется, что многие успешные трейдеры обычно не делятся своими торговыми стратегиями, поэтому должна быть причина, по которой они так поступают. Кто-нибудь хочет разобраться в этом?

 
TheShanghai:
Как вы считаете, ребята, система будет набирать или терять свою эффективность по мере увеличения количества людей, которые ее применяют? Кажется, что многие успешные трейдеры обычно не делятся своими торговыми стратегиями, поэтому должна быть причина, по которой они так поступают. Кто-нибудь хочет разобраться в этом?

Я слышал об этой идее, что многие успешные трейдеры обычно не делятся своими торговыми стратегиями или делятся некоторыми неправильными стратегиями. Может быть. Я не знаю. Потому что форекс - это деньги. Я думаю, что ничего страшного в этой эффективности нет. Это потому что не так много успешных трейдеров и это что-то с брокерами.

BTW, я думаю, что это личное. Один трейдер может использовать какую-то торговую стратегию, а я не могу из-за своего характера, привычек, часового пояса и так далее. Так что это личное. В любом случае, мы можем открыть все стратегии, как мы уже делаем здесь на форуме.

 

Спасибо за отзыв. Я буду иметь это в виду.

 

Следуйте за трендом

Здравствуйте,

У меня есть простая, но стабильная система, которая работает на меня. Я использую 34 EMA на закрытии. RSI 7 на закрытии. CCI 20 на закрытии. Поместите EMA на график и посмотрите на тренд. Начните с 30M и двигайтесь до H4 и даже D1. Тренд ЕМА должен быть одинаковым на всех таймфреймах. Если тренд правильный, вы можете входить в сделку, если RSI выше/ниже 50 на таймфрейме D1, а CCI выше/ниже 100. Оставайтесь на графике H4, когда начинается торговля, это не даст вам увидеть шум на рынке и позволит вам закрыться раньше времени. Поставьте стоплосс на уровне 80 пунктов. Вы также можете использовать Fib, чтобы увидеть, есть ли на рынке коррекция или нет. Мне нравится использовать равноудаленный канал (стандартный инструмент metatrader), чтобы найти рыночный тренд. Я придерживаюсь этого тренда до тех пор, пока не получу прибыль. Этот метод не является надежным, но одно я знаю точно, и с каждым днем он становится все более понятным для меня, а именно: я не торгую против основного тренда.

Пожалуйста, поэкспериментируйте с этим методом на демо и давайте построим более долгосрочную систему, которая будет работать для более серьезных трейдеров.

Roets

 

Значение по умолчанию при объявлении массива

Привет всем,

Какое значение помещается в качестве значения по умолчанию в этом массиве:

double ARRAYA[];

double ARRAYB[];

Я хочу очистить все содержимое этих массивов, выполнив следующие действия:

ArrayInitialize(ARRAYA,NULL);

ArrayInitialize(ARRAYB,NULL);

Однако установка в NULL приводит к тому, что Массив заполняется 0 (нулем).

Есть предложения?

-charliev

 

Индикатор #include в советнике?

Привет всем,

Есть ли способ #include скомпилированного индикатора, чтобы он загружался при загрузке советника? (Сделать советник отдельно стоящим в виде 1 файла .EX4?).

Спасибо за помощь!

-charliev

Причина обращения: