Как кодировать? - страница 204

 

MT-4, пожалуйста, помогите мне.

MT-4- Помогите пожалуйста, хочу сделать файл пересечения DMI+ и DMI- .Хочу иметь сигнал в момент движения DMI+ и DMI- без ADX. Мне это важно. Я пишу это ниже, но пожалуйста, создайте для этого файл, чтобы переместить его в MF4.

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

//| ADXcross EXPERT |

//| Perky_z |

//| |

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

#property copyright "Perky_z@yahoo.com "

#property link "http://groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/"

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

//| Алерт в руке с ADXcrosses Indicator их не нужно запускать вместе |

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

// Оповещения о пересечении + и - линий DI

//Я использую его на 15-минутных графиках

// хотя выглядит хорошо на любом таймфрейме

// для подтверждения этого триггера используйте другие индикаторы

//---- входные параметры

double b4plusdi,b4minusdi,nowplusdi,nowminusdi;

//----

//---- индикаторы

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

b4plusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,1);

nowplusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,0);

b4minusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,1);

nowminusdi=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,0);

 

Он закрывает частичные лоты, но... не совсем так, как я ожидал.

Я не могу понять, что он делает, но, похоже, закрывает 1 лот, когда цена находится НЕ там, где я хочу.

Возможно, вы можете увидеть проблему здесь.

должен закрываться 1 лот, когда есть BUY и цена идет .00071 (просто случайное число, которое я тестирую на 1-минутном графике)

или закрывать 1 лот, когда происходит ПРОДАЖА и цена падает на .00071.

Кстати, использую 5-значного брокера. Открыта только 1 сделка и только этим советником, так что никакого прокручивания ордеров.

СПАСИБО за помощь!

if (IsConnected() && IsTradeAllowed()) while (IsTradeContextBusy()) Sleep(75);

if (OrdersTotal()>0) {OrderSelect(0, SELECT_BY_POS,MODE_TRADES);

RefreshRates();

if (Bid >= (OrderOpenPrice()+ (.00071)) && OrderLots() == 2 && (OrderType() == OP_BUY)) {

OrderClose(OrderTicket(),1,Ask,10,R ed); }

if (Ask <= (OrderOpenPrice()- (.00071)) && OrderLots() == 2 && (OrderType() == OP_SELL)) {

OrderClose(OrderTicket(),1,Bid,10,B lue); }}

 

Можно ли сделать код для закрытия сделки в безубытке (прибыль=0), когда сделка (один раз) имеет положительную прибыль, но все еще ниже стоп-уровня брокера (трейлинг еще не тронут)?

Для брокера со стоп-уровнем 10 пунктов система трейлинга может работать, только если прибыль достигла хотя бы 10 пунктов.

Много раз я вижу, как сделка выходит в плюс только на 5 или 8 пунктов, а затем возвращается обратно и бьет SL.

Поэтому я думаю об этом, но не знаю, как это сделать.

Как сделать безубыточный код для советника, что-то вроде Trailing Stop, но работающий ниже минимального уровня StopLevel брокера?

 

Для SPACECHIMP

Когда мы открываем ордер, мы используем Ask для покупки и Bid для продажи. При закрытии - наоборот.

 

Да, я думаю, это очень полезно

FulltimeTrader:июнь2009

 

Мне нужна помощь в добавлении оповещения по электронной почте в этот индикатор Top Trend

Мне нужна помощь, чтобы добавить оповещение по электронной почте в этот индикатор Top Trend.

вот строка и прикрепленный файл.

if (trend>0)

{

if (Signal>0 && UpTrendBuffer[shift+1]==-1.0)

{

UpTrendSignal[shift]=bsmin[shift];

UpTrendBuffer[shift]=bsmin[shift];

if(Line>0) UpTrendLine[shift]=bsmin[shift];

if (SoundON==true && shift==0 && !TurnedUp)

{

Alert("BBands going Up on ",Symbol(),"-",Period());

TurnedUp = true;

TurnedDown = false;

}

}

else

{

UpTrendBuffer[shift]=bsmin[shift];

if(Line>0) UpTrendLine[shift]=bsmin[shift];

UpTrendSignal[shift]=-1;

}

if (Signal==2) UpTrendBuffer[shift]=0;

DownTrendSignal[shift]=-1;

DownTrendBuffer[shift]=-1.0;

DownTrendLine[shift]=EMPTY_VALUE;

}

if (trend<0)

{

if (Signal>0 && DownTrendBuffer[shift+1]==-1.0)

{

DownTrendSignal[shift]=bsmax[shift];

DownTrendBuffer[shift]=bsmax[shift];

if(Line>0) DownTrendLine[shift]=bsmax[shift];

if (SoundON==true && shift==0 && !TurnedDown)

{

Alert("BBands going Down on ",Symbol(),"-",Period());

TurnedDown = true;

TurnedUp = false;

}

}

else

{

DownTrendBuffer[shift]=bsmax[shift];

if(Line>0)DownTrendLine[shift]=bsmax[shift];

DownTrendSignal[shift]=-1;

}

if (Signal==2) DownTrendBuffer[shift]=0;

UpTrendSignal[shift]=-1;

UpTrendBuffer[shift]=-1.0;

UpTrendLine[shift]=EMPTY_VALUE;

}

}

return(0);

}

Файлы:
toptrend.mq4  6 kb
 

Не могу увидеть проблему ЗДЕСЬ!!!???? AAAAHHHH

Я понятия не имею, что я делаю не так...

похоже, что это не закрывает половину при определенном ТП.

if (OrdersTotal()>0) {

OrderSelect(0, SELECT_BY_POS,MODE_TRADES);

Tick = OrderTicket(); // Номер выбранного ордера

Tip =OrderType(); // Тип выбранного ордера

Цена =OrderOpenPrice(); // Цена выбранного ордера

Lot =OrderLots();

if (Bid >= (Price + (TakeProfit * Point)) && Lot == 2 && (Tip == OP_BUY)) {

OrderClose(Tick,1,Bid,10,Red); }

if (Ask <= (Price - (TakeProfit * Point)) && Lot == 2 && (Tip == OP_SELL)) {

OrderClose(Tick,1,Ask,10,Blue); }}

Правильно ли я указал BID и ASK? Возможно, нет.

 

мне нужна помощь с моим ea

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

 

Где в этой теме....

Где-то в этой теме должен был быть задан этот вопрос...

Может ли кто-нибудь помочь мне с кодом, чтобы 1) иметь скрытый SL, который 2) закрывает только часть (50%) открытого ордера и 3) закрывает оставшуюся часть ордера после пересечения скользящей средней.

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

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

Файлы:
 

Как предотвратить перезагрузку индикатора при каждом новом тике

Подскажите, пожалуйста, что я сделал не так, вызывая iCustom, из-за чего индикатор загружается заново при каждом новом тике(при бэктестинге все окно просмотра заполняется сотнями итераций этого индикатора).

Из моей "Стартовой программы" я хочу подтвердить возможность торговли, используя метод EntryDir() (который следует ниже):

static datetime lastsd;

if ( CurTime()-lastsd>2*60*Period() )

{

if(ZZ>=High[1] && EntryDir()==OP_SELL)

{

if(pos == 1) {DoExit(OP_BUY);}

PrepNewOrder(OP_SELL);

lastsd=CurTime();

}

if(ZZ!=0 && ZZ<=Low[1] && EntryDir()==OP_BUY)

{

if(pos == -1) {DoExit(OP_SELL);}

PrepNewOrder(OP_BUY);

lastsd=CurTime();

}

}

int EntryDir()

{

bool buyOK=false, sellOK=false;

double flow = iCustom(NULL, 0, "Dtron", 0,0) + iCustom(NULL, 0, "Dtron" 1,0);

double trigger = iCustom(NULL, 0, "Dtron", 1,0) + iCustom(NULL, 0, "Dtron", 3,0);

double reversal = iCustom(NULL, 0, "Dtron", 4,0);

if((reversal==0 && flow + trigger>0) || reversal>0) entryDir=OP_BUY;

if((reversal==0 && flow + trigger<0) || reversal<0) entryDir=OP_SELL;

return(entryDir);

}

Пожалуйста, покажите мне, как предотвратить открытие сотен окон индикатора Dtron.

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