gold_traid
Новичок форума
понятно спасибоВ принципе можно, и, довольно-таки несложно. Проверяешь время, если время ночное., то настройки такие-то.., а если другое.. то другие. Что тут сложного-то?
понятно спасибоВ принципе можно, и, довольно-таки несложно. Проверяешь время, если время ночное., то настройки такие-то.., а если другое.. то другие. Что тут сложного-то?
//+-------------------------------------------------------------------------------------+
//| Получение значений МА на указанном баре |
//+-------------------------------------------------------------------------------------+
double GetMA(int index, int maPeriod, int mode)
{
return (iMA(NULL, i_TF, maPeriod, 0, MODE_EMA, mode, index));
}
//+-------------------------------------------------------------------------------------+
//| Имеет ли место отскок? |
//+-------------------------------------------------------------------------------------+
void IsRebound(int crossDir[], bool& returnSign[])
{
int up,
down;
for (int i = 0; i < 4; i++)
{
returnSign[i] = false;
if (crossDir[i] == CROSS_NO)
continue;
// double ema = GetMA(1, g_maPeriod[i]);
if (crossDir[i] == CROSS_UP)
{
double ema = GetMA(0, g_maPeriod[i], MODE_LOW);
if (ND(Ask - ema) <= i_thresholdFromMa * pt) // ..зазор между ценой покупки и машки, <= i_thresholdFromMa..
{
returnSign[i] = true;
VrPrReturnSign (" returnSign["+0+"]"+" = "+ returnSign[0]);
VrPrReturnSign (" returnSign["+1+"]"+" = "+ returnSign[1]);
VrPrReturnSign (" returnSign["+2+"]"+" = "+ returnSign[2]);
VrPrReturnSign (" returnSign["+3+"]"+" = "+ returnSign[3]);
Print(" ND(Ask - ema) <= i_thresholdFromMa * pt; ", ND(Ask - ema), " <= ", i_thresholdFromMa * pt);
Print("Ask = ", Ask);
Print("ema = ", ema);
}
}
if (crossDir[i] == CROSS_DN)
{
ema = GetMA(0, g_maPeriod[i], MODE_HIGH);
if (ND(ema - Bid) <= i_thresholdFromMa * pt) // ..зазор между ценой продажи и машки, <= i_thresholdFromMa..
{
returnSign[i] = true;
VrPrReturnSign (" returnSign["+0+"]"+" = "+ returnSign[0]);
VrPrReturnSign (" returnSign["+1+"]"+" = "+ returnSign[1]);
VrPrReturnSign (" returnSign["+2+"]"+" = "+ returnSign[2]);
VrPrReturnSign (" returnSign["+3+"]"+" = "+ returnSign[3]);
Print(" ND(Ask - ema) <= i_thresholdFromMa * pt; ", ND(ema - Bid), " <= ", i_thresholdFromMa * pt);
Print("Bid = ", Bid);
Print("ema = ", ema);
}
}
}
}
2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: ema = 1.4522
2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: Ask = 1.4509
2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: ND(Ask - ema) <= i_thresholdFromMa * pt; -0.0013 <= 0.0008
2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: ema = 1.4522
2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: Ask = 1.4509
2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: ND(Ask - ema) <= i_thresholdFromMa * pt; -0.0013 <= 0.0008
2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: ema = 1.4522
2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: Ask = 1.4509
А ты проверь какие МА поставлены на график. Совпадает-ли с параметрами в советнике.Хм. Кто может объяснить эту ситуацию? Вот скрин:
Вод кусок кода:
PHP://+-------------------------------------------------------------------------------------+ //| Получение значений МА на указанном баре | //+-------------------------------------------------------------------------------------+ double GetMA(int index, int maPeriod, int mode) { return (iMA(NULL, i_TF, maPeriod, 0, MODE_EMA, mode, index)); } //+-------------------------------------------------------------------------------------+ //| Имеет ли место отскок? | //+-------------------------------------------------------------------------------------+ void IsRebound(int crossDir[], bool& returnSign[]) { int up, down; for (int i = 0; i < 4; i++) { returnSign[i] = false; if (crossDir[i] == CROSS_NO) continue; // double ema = GetMA(1, g_maPeriod[i]); if (crossDir[i] == CROSS_UP) { double ema = GetMA(0, g_maPeriod[i], MODE_LOW); if (ND(Ask - ema) <= i_thresholdFromMa * pt) // ..зазор между ценой покупки и машки, <= i_thresholdFromMa.. { returnSign[i] = true; VrPrReturnSign (" returnSign["+0+"]"+" = "+ returnSign[0]); VrPrReturnSign (" returnSign["+1+"]"+" = "+ returnSign[1]); VrPrReturnSign (" returnSign["+2+"]"+" = "+ returnSign[2]); VrPrReturnSign (" returnSign["+3+"]"+" = "+ returnSign[3]); Print(" ND(Ask - ema) <= i_thresholdFromMa * pt; ", ND(Ask - ema), " <= ", i_thresholdFromMa * pt); Print("Ask = ", Ask); Print("ema = ", ema); } } if (crossDir[i] == CROSS_DN) { ema = GetMA(0, g_maPeriod[i], MODE_HIGH); if (ND(ema - Bid) <= i_thresholdFromMa * pt) // ..зазор между ценой продажи и машки, <= i_thresholdFromMa.. { returnSign[i] = true; VrPrReturnSign (" returnSign["+0+"]"+" = "+ returnSign[0]); VrPrReturnSign (" returnSign["+1+"]"+" = "+ returnSign[1]); VrPrReturnSign (" returnSign["+2+"]"+" = "+ returnSign[2]); VrPrReturnSign (" returnSign["+3+"]"+" = "+ returnSign[3]); Print(" ND(Ask - ema) <= i_thresholdFromMa * pt; ", ND(ema - Bid), " <= ", i_thresholdFromMa * pt); Print("Bid = ", Bid); Print("ema = ", ema); } } } }
Вот принт:
Там видно, что машка не может быть на цене 1.4522, а по принту типа так и есть. С чем это может быть связано?PHP:2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: ema = 1.4522 2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: Ask = 1.4509 2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: ND(Ask - ema) <= i_thresholdFromMa * pt; -0.0013 <= 0.0008 2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: ema = 1.4522 2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: Ask = 1.4509 2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: ND(Ask - ema) <= i_thresholdFromMa * pt; -0.0013 <= 0.0008 2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: ema = 1.4522 2013.04.15 23:28:33 2010.01.11 16:17 Base150_New EURUSD,H1: Ask = 1.4509
Хм. Кто может объяснить эту ситуацию? Вот скрин:
Там видно, что машка не может быть на цене 1.4522, а по принту типа так и есть. С чем это может быть связано?
Приветствую ребят памогите с проблемкой вот сов у меня торгует как на 5 так и на 4 знаках решил его обробывать на счёте NDD не открывает ордера пишет не хватает маржи хотя ручками открываю с таким же обьёмам всё нормально. может в коде что изменить подскажите.
В цикле вызвать CCI на разных барах и записать значение в массив. Количество ячеек массива = количеству вызова CCI и больше периода усреднения МА. В результате есть массив с значениями CCI.вопрос такой: как в коде написать условие откытия но не по самому индикатору (допустим CCI) а по машке , наложенной на сам индикатор?
Дак уже всё перепробывал не 1 год вродебы первый раз такое встричаю такое впечатление что мультивалютная торговля заприщена ну это тоже бред.
Карочи не работает на 5 знаках что падскажите?
Каждую неделю обсуждают вопрос постановки стопов на счетах NDD и ECNПриветствую ребят памогите с проблемкой вот сов у меня торгует как на 5 так и на 4 знаках решил его обробывать на счёте NDD не открывает ордера пишет не хватает маржи хотя ручками открываю с таким же обьёмам всё нормально. может в коде что изменить подскажите.
Всем привет, есть вопрос: в сове открытие поз должно стартовать при поступлении 2-х сигналов, каждый сигнал длится в течении одного бара, сигналы могут поступить как на одном баре так и на разных, как сделать так чтоб если поступило не 2 сигнала сразу а снвчала один а второй только через несколько баров то сова б запомнила что 1 сигнал уже есть и ждала бы 2-го.
Правильный подход - не запоминать состояние, а проверять каждый раз, нет ли комбинации из двух сигналов.
с этим проблем нет.проверять каждый раз, нет ли комбинации из двух сигналов
1. Хранить сигналы в статических переменных. Наиболее простой способ, но у него есть недостаток. Если 1 сигнал был тогда когда советник не работал (не было связи, не запущен терминал...) то второй сигнал не сработает так как первый не был записан в статическую переменную.Всем привет, есть вопрос: в сове открытие поз должно стартовать при поступлении 2-х сигналов, каждый сигнал длится в течении одного бара, сигналы могут поступить как на одном баре так и на разных, как сделать так чтоб если поступило не 2 сигнала сразу а снвчала один а второй только через несколько баров то сова б запомнила что 1 сигнал уже есть и ждала бы 2-го.
int SIGNAL()
{
static int CurrentSignal ;
static int LastSignal ;
if(sign1()==1) CurrentSignal = 1;
if(sign1()==2) CurrentSignal = 2;
if(sign1()==0&&LastSignal==1)CurrentSignal = 1;
if(sign1()==0&&LastSignal==2)CurrentSignal = 2;
if(LastSignal != CurrentSignal) LastSignal = CurrentSignal;
return(LastSignal);
}