[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 55

 
Lians:

Я уже обращался на форум по поводу записи и чтения массивов в файл, а теперь опять столкнулся с проблемой: записав в файл массив, не могу потом найти элемент массива по значению, вот скрипт:

Результат выполнения данного скрипта у меня - это запись в журнале "Слова xyz в записанном файле нет, а есть слово xyz"

Подскажите, пожалуйста, в чем ошибка и как исправить?

Вы используете 2-ух мерный массив string y[][], а проверку (поиск) производите в одномерном массиве. Попробуйте эту функцию:

bool ArraySearchString (string m[][], string e1)
{
    for (int i1 = 0; i1 < ArrayRange (m, 0); i1++)
    {
        for (int i2 = 0; i2 < ArrayRange (m, 1); i2++)
        if (m[i1][i2] == e1) return (true);
    }
    return (false);
}

и условие проверки измените на

if (ArraySearchString (y,"xyz"))
 

TarasBY, спасибо огромное! Работает!

А ещё вопрос, кто-нибудь встречал такое явление, когда один и тот же скрипт, математически вычисляющий некоторое целое число в разных билдах терминала выдает разные значения. Например в 399 билде выдает результат 488143839, а в 416-м выдает 348186686.

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

 
Lians:

TarasBY, спасибо огромное! Работает!

А ещё вопрос, кто-нибудь встречал такое явление, когда один и тот же скрипт, математически вычисляющий некоторое целое число в разных билдах терминала выдает разные значения. Например в 399 билде выдает результат 488143839, а в 416-м выдает 348186686.

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



Числа у вас большие, возможно причина в переполнении целой переменной.
 
Здравствуйте, помогите добавить стоп лосс. Пробовал сам, стоп лосс не появляется.
Файлы:
q163hud4n85.mq4  33 kb
 
moskitman:
нет, Вадим, настольный! Видюха и сама 512мб ДжиФорс-9600
В 32 разрядных клиентских операционных системах невозможно использовать память объемом более 3,5GB (в некоторых 3,25, это зависит от особенностей биоса системных плат)
Это объясняется 32 разрядной архитектурой и тем что пространство от 3,5 до 4Gb занято под адресацию устройств PCI, в частности если у вас установлено много PCI устройств, то вы "увидите" меньше оперативной памяти, чем у вас есть
.
 
Zhunko:
да надоумили уже, тем не менее спасибо, Вадим.
 
sand:

Числа у вас большие, возможно причина в переполнении целой переменной.
А не знаете как этого избежать? Не использовать функции типа MathFloor(), MathSqrt() ...? Или ничего не сделать с этим? Мне надо чтобы одинаково везде считалось.
 
yosuf:
Часто пропадает интернет, нельзя, ли автоматизировать программно его повторный запуск? Или что в этом направлении известно? Есть ли способ одновременно запитать от двух и более провайдеров, в смысли, паралельно? Заранее благодарю.

XmaksasX:

создаете обычный текстовый документ пихаете в него вот этот текст

:LOOP
ping 8.8.8.8 | find "100%" && (rasdial /disconnect & rasdial "НАЗВАНИЕ ВАШЕГО СОЕДИНЕНИЯ" login pass)
ping -w 1000 -n 30 127.0.0.1

goto LOOP

сохраняете его и меняете расширение с *.txt на *.bat, запускаете сворачиваете и радуетесь))

 

Уважаемый  XmaksasX, безмерно благодарю Вас за очень дельный совет, за двое суток ни разу не выбило интернет, или я этого не замечаю,  возможно, поскольку работает принцип, подсказанный Вами. Раньше могло вырубаться каждые 10 минут,  каждый час или ночью, еще печальнее, когда на работе, т.е. без всякой системы. Теперь - благодать, можно и выспаться.

Еще один вопрос, можно ли реальным счетом управлять паралельно с двух  компов одновременно, с компов дома и на работе?

 

Вот кусок кода из советника. Я хотел реализовать идею, что если есть отклонение от цены открытия на сигму, то закрываем. по идее если сигму поставить = 1*Point. То советник должен с прибылью всегда закрывать, т.к. отклонение всегда присутствует в 1*Point, другое дело, что в реале есть спред поэтому он будет сливать, а тестере то нет спреда, значит он должен зарабатывать, постоянно. мало но постоянно.

Думаю, что здесь ошибка.

if (OrdersTotal()!=0)
    {
     OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
     
     if (OrderType()==OP_BUY)
     {
      if ((Bid-Open[0])>=SigmaHigh*Point) OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Red);
     }
      
     if (OrderType()==OP_SELL) 
     {
       if ((Open[0]-Ask)>=SigmaLow*Point) OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Green);
     }
    }
 
orb:

а тестере то нет спреда


В тестере есть спред. Точно такой-же как на графике во время запуска теста.
Причина обращения: