[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 75

 
Неподскажите какой код нужно прописать, чтобы при закрытии сделки, следующая сделка могла открываться только на следующем баре??
 
Подскажите пожалуйста, как сделать так, чтобы свечи на графике цены окрашивались в зеленый, когда Awesome Oscillator и Acceleration/Deceleration Oscillator имеют зеленый цвет, в красный когда Awesome Oscillator и Acceleration/Deceleration Oscillator - красный цвет, а когда индикаторы разного цвета, чтобы свечи были серыми?
 
gmMarat писал(а) >>
Неподскажите какой код нужно прописать, чтобы при закрытии сделки, следующая сделка могла открываться только на следующем баре??

Так, значит, вопрос вот какой: как зделка закрывается?? Стопом (это сложнее), или сами закрываем. Если сами закрываем, то намного проще.

 
Nosferatu писал(а) >>
Подскажите пожалуйста, как сделать так, чтобы свечи на графике цены окрашивались в зеленый, когда Awesome Oscillator и Acceleration/Deceleration Oscillator имеют зеленый цвет, в красный когда Awesome Oscillator и Acceleration/Deceleration Oscillator - красный цвет, а когда индикаторы разного цвета, чтобы свечи были серыми?

Свечки ни разу не красил, но ЭТОТ индюк ТОЧНО видел в базе. Правда месяца 4 назад. Поищи.

 
infinum13 >>:

Так, значит, вопрос вот какой: как зделка закрывается?? Стопом (это сложнее), или сами закрываем. Если сами закрываем, то намного проще.

Сдеки закрываются по тейкпрофиту или стоплосу!!!

 

Вопрос.

у меня индюк прописывает котировку по инструменту примерно так - 2321.50000000


Как избавиться от лишних нулей?

 

Очень хорошо про написание экспертов здеся. http://www.vedikhin.ru/2006/06/expert-advisors-overview.html

И да простят меня боги Форекса, это же в вордовском формате .

Файлы:
 

Мну плз тоже подскажите .

Ограничения компилятора . Очень хочется зна об ограничениях по массивам ( кол-во массивов или общее кол-во элементов, или исчо что то например выделяемая память ), и по кол-ву глобальных переменных в смысле суперглобальных .

 

Всем привет

Решил я написать эксперт. Взял для него Стох. Пусть, думаю, только один ордер, только продает выше 80, а закрывает ниже 50. Вписал еще StopLoss, чтоб терять поменьше. Погонял, потестил. Эксперт вроде работает, только бывает, подряд StopLossОВ несколько берет. Решил я тогда после первого Lossа продажные условия менять, чтобы они ощутимо от первоначальных отличались. Для этого ввел польз функцию isCloseLastPosByStop, у Кima взял, понравилась. Если сработал Loss она сигналит и в журнал пишет, а после ее if(SSL==true) сигнала я задаю новые продажные условия. Написал, откомпилировал, запустил – работает, но также в некоторых местах берет подряд несколько LossО, чтоб он Стох. В силу своей малой грамотности в MQL4 не могу понять что не так. Поможите кто чем может….. сами мы не здешние…… А может кто то подскажет как идею реализовать другим способом. Заранее благодарю, место здесь хорошее, я ни разу без дельного совета еще не уходил….


#property copyright "Alex"

#property link "http://www.сайта.net"
//---- input parameters
extern int MagicNamber=88881;
extern int K_per=30;
extern int D_per=8;
extern int Slow=10;
extern double Lots=1.0;
extern double StopLoss=300;
extern double SSL=0;

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

int start()
{
int
cnt=0,
ticket,
total;
double
StochK_0, // Значен. лнии К
StochD_1, // Значен. лнии D
SL=StopLoss;
isCloseLastPosByStop();
if (Bars<100)
{
Print("bars less than 100");
return(0);
}
StochK_0=iStochastic(NULL, 0, K_per,D_per,Slow,MODE_SMA,0,MODE_MAIN, 0); // K
StochD_1=iStochastic(NULL, 0, K_per,D_per,Slow,MODE_SMA,0,MODE_MAIN, 2); //D
total=OrdersTotal();
if(total<1)
if ((StochK_0>StochD_1) && StochD_1 > 80) // условие продажи
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "My EXP", MagicNamber,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
RefreshRates();
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL
OrderSymbol()==Symbol()) // инструмент совпадает?
{
if(OrderType()==OP_SELL) // открыта кор позиция
SSL=isCloseLastPosByStop();
if(SSL==true)

{
Print("StopLoss");
}
total=OrdersTotal();
if(total<1)
if ((StochK_0<StochD_1) && StochK_0 < 50) // условие продажи если сработал стопЛосс
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "My EXP", MagicNamber,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
RefreshRates();
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL
OrderSymbol()==Symbol()) // инструмент совпадает?
{
if(OrderType()==OP_SELL) // открыта кор позиция
{
if(StochK_0>StochD_1 && StochD_1 < 50) // условие закрытия
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // закрываем позицию
return(0); // выходим
}}}}}}}
//___пользовательская фу-я
bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, osl;
int dg, i, j=-1, k=OrdersHistoryTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}}}}}}}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(sy, MODE_DIGITS);
if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
ocp=NormalizeDouble(OrderClosePrice(), dg);
osl=NormalizeDouble(OrderStopLoss(), dg);
if (ocp==osl) return(True);
}
return(False);
}
 
luka писал(а) >>

Вопрос.

у меня индюк прописывает котировку по инструменту примерно так - 2321.50000000

Как избавиться от лишних нулей?

Оператор DoubleToStr() поможет тебе.

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