Скрипт вероятности Mt4

Я новичок в python

Я сделал простой скрипт, который импортирует фиды цен из mt4.

Моя идея/проект состоит в том, чтобы превратить это в своего рода индикатор вероятности, который дает вероятность, помимо бида и аска, например:

TIME/                BID             ASK
USD/CADD     22:19   1.30451 60%^    1.30D39 40%v

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

Он ищет два шаблона: A, B,

Паттерн А представляет собой бычий паттерн

Паттерн B представляет собой медвежий паттерн.

в основном ищут, насколько велика вероятность повторения A или B из двух, которые имеют более высокую вероятность повторения,

Вот где я застрял

Я понятия не имею, как это собрать...

Вот что у меня есть до сих пор:

import datetime
import numpy as np
import pandas as pd
import sklearn

from pandas.io.data       import DataReader
from sklearn.ensemble     import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.lda          import LDA
from sklearn.metrics      import confusion_matrix
from sklearn.qda          import QDA
from sklearn.svm          import LinearSVC, SVC

import dde_client as ddec
import time

QUOTE_client = ddec.DDEClient('MT4', 'QUOTE')

symbols = ['USDCAD', 'GOLD','EURUSD', 'SILVER', 'US30Cash',  ]
for i in symbols:
    QUOTE_client.advise(i)


def Get_quote():
 while 1:
    time.sleep(1)
    print "Symbol\tDATE\t\tTIME\tBID\tASK"
    for i in symbols:
        current_quote = QUOTE_client.request(i).split(" ")
        day, _time, bid, ask = (current_quote[0], current_quote[1],
                            current_quote[2], current_quote[3])
        print i + ":\t" + day + "\t" + _time +"\t" +bid+ "\t" + ask
        break
        time.sleep(1)
        return Get_quote()
        continue


    def create_lagged_series(cuurent_quote,start_time, end_time, lags=1):
      ts = DataReader(cuurent_quote,symbols,
                    start_time-datetime.timedelta(hours=1),
                    end_time
                    )
      tslag = pd.DataFrame(index=ts.index)
      ts['Today'] = ts['Adj Close']
      tslag["Volume"] = ts["Volume"]
      for i in xrange(0, lags):
         tslag["Lag%s" % str(i+1)] = ts["Adj Close"].shift(i+1)

      tsret = pd.DataFrame(index=tslag.index)
      tsret["Volume"] = tslag["Volume"]
      tsret["Today"] = tslag["Today"].pct_change()*100.0

      for i in xrange(0, lags):
             if (abs(x) < 0.0001):
              tsret["Today"][i] = 0.0001

      for i in xrange(0,lags):
            tsret["Lag%s" % str(i+1)] = \
            tslag["Lag%s" % str(i+1)].pct_change()*100.0

      tsret["Direction"] = np.sign(tsret["Today"])
      tsret = tsret[tsret.index >= start_time]

      return tsret

      if __name__ == "__main__":
         snpert = create_lagged_series(len('GOLD', Get_quote(), 1))
         X = snpret[["Lag1","Lag2"]]
         y = snpret["Direction"]
         start_test = cuurernt_quote


         X_train = X[X.index < start_test]
         X_test = X[X.index >= start_test]
         y_train = y[y.index < start_test]
         y_test = y[y.index >= start_test]
         print "Hit Rates/Confusion Matrices:\n"
         models = [ ( "LR",   LogisticRegression() ),
                    ( "LDA",  LDA() ),
                    ( "QDA",  QDA() ),
                    ( "LSVC", LinearSVC() ),
                    ( "RSVM", SVC( C            = 1000000.0,
                                   cache_size   = 200,
                                   class_weight = None,
                                   coef0        = 0.0,
                                   degree       = 3,
                                   gamma        = 0.0001,
                                   kernel       = 'rbf',
                                   max_iter     = -1,
                                   probability  = False,
                                   random_state = None,
                                   shrinking    = True,
                                   tol          = 0.001,
                                   verbose      = False
                                   )
                      ),
                    ( "RF",   RandomForestClassifier( n_estimators = 1000,
                                                      criterion    = 'gini',
                                                      max_depth         = None,
                                                      min_samples_split = 2,
                                                      min_samples_leaf  = 1,
                                                      max_features      = 'auto',
                                                      bootstrap         = True,
                                                      oob_score         = False,
                                                      n_jobs            = 1,
                                                      random_state      = None,
                                                      verbose           = 0
                                                      )
                      )
                    ]

    # Iterate through the models
      for m in models:

        # Train each of the models on the training set
                 m[1].fit(X_train, y_train)


                 pred = m[1].predict(X_test)


                 print "%s:\n%0.3f" % (m[0], m[1].score(X_test, y_test))
                 print "%s\n" % confusion_matrix(pred, y_test)

Вот только мой сценарий MT4 ценовой ленты:

import dde_client as ddec
import time

__author__ = 'forex Ticker'

print __author__


QUOTE_client = ddec.DDEClient('MT4', 'QUOTE')

symbols = ['USDCAD', 'GOLD','EURUSD', 'SILVER', 'US30Cash',  ]
for i in symbols:
    QUOTE_client.advise(i)



while 1:
    time.sleep(1)
    print "Symbol\tDATE\t\tTIME\tBID\tASK"
    for i in symbols:
        current_quote = QUOTE_client.request(i).split(" ")
        day, _time, bid, ask = (current_quote[0], current_quote[1],
                            current_quote[2], current_quote[3])
        print i + ":\t" + day + "\t" + _time +"\t" +bid+ "\t" + ask
        break
        time.sleep(1)
        continue


person LibertySIlver    schedule 27.07.2015    source источник
comment
Привет. Не могли бы вы уточнить, как вы получаете котировки из MT4? Я не понимаю, как вы подключаете скрипт Python к MT4 для получения данных.   -  person jbssm    schedule 24.08.2015
comment
используя пользовательский модуль для подключения к серверу mt4 DDE:   -  person LibertySIlver    schedule 24.08.2015
comment
fxgears.com/forum/index.php?topic=582.0 здесь больше информация о том, как настроить его, не могли бы вы помочь мне с этим вопросом,?   -  person LibertySIlver    schedule 24.08.2015


Ответы (2)


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

Я бы даже абстрагировался от MT4 и логики чтения котировок и просто имел несколько тестовых чисел (фальшивых или выборочных) в файле CSV или TXT. Начните с рабочего примера, который может распознавать шаблоны A и B в этом файле. Имея это, определите, чем ваш собственный алгоритм отличается, и попытайтесь его настроить.

Когда все заработает, последним шагом будет интеграция с MT4. Похоже, что DDE-сервер предназначен только для экспорта данных, а не для построения индикатора. Рассмотрим эту альтернативную структуру: связывание MT4 с Python. С его помощью вы можете не только построить индикатор на графике, но и осуществлять автоматическую торговлю по вашему алгоритму.

person battlmonstr    schedule 04.12.2016

В: Как сложить это воедино...?
О: Составьте реалистичный план - лучше всего, прежде чем класть деньги на стол.

Это может уберечь вас
даже от того, чтобы начать делать глупости.
или
от наведения на нереалистичные цели.

Никто не пострадает, если план станет первым разработанным и согласованным всеми вовлеченными сторонами рабочим документом о том, КАК БУДЕТ «отличное и крутое новое прорывное видение» СОЗДАНО.

Организуйте свою дальнейшую работу по шагам + всегда добавляйте элементы управления бюджетом, будь то в [man*weeks] или [k$], каждый готов тратить на предметы.

Нужно уметь принимать решения об осуществимости и живучести изначально отличной и классной идеи.

Тщательно спланируйте основные этапы, как на стороне MQL4/5, так и на стороне 4_ и других компонентов:

  • X [man*weeks] в разделе [Архитектура системной интеграции],
  • Y [man*weeks] в разделе [Проектирование модели интеграции],
  • Z [man*weeks] в [Прототип модели интеграции],
  • U [man*weeks] в разделе [Тестирование интеграционной модели],
  • V [man*weeks] в [Выпуск модели интеграции],
  • W [man*weeks] в разделе [Интеграционная модель производственной экосистемы]
  • S [man*weeks] к [Циклы проектирования для поиска лучшей модели прогнозов]
  • T [man*weeks] к [Циклы проектирования по поиску хороших торговых стратегий для прогнозов]

Элементы, которые не следует забывать о преодолении в ранних архитектурных решениях:

0) Забудьте об использовании MQL4/5 примеров, вы подвергаете себя риску в битве за доли секунды с сотнями миллионов долларов США в борьбе и движении< br> 1) Забудьте использовать Custom Indicator в терминале MQL4/5 MetaTrader (блокировка)
2) Забудьте использовать DDE интеграция, некоторые операционные системы ее вообще не поддерживают
3) Забудьте использовать pandas (даже для любого прототипирования модели AI/ML) поскольку наносекунды имеют большое значение в процессе машинного обучения, панды — отличная игрушка, но не для производительности, необходимой для настройки модели машинного обучения в реальной торговле.
4) Забудьте использовать start- В конце логики AI/ML-движки должны быть отдельными, чтобы эффективно обучать/проверять/тестировать их лучшие способности к обобщению в обширных пространствах состояний HyperPARAM.
for m in models: может находиться в исходный код, но не в реальности. Один инструмент может занять (и требует) около нескольких десятков [CPU-core*days] времени выполнения при оптимизации параметров на COTS-оборудовании, поэтому считайте здесь реалистичными цифрами для надлежащего бюджета каждого из [S ]+[T] циклов.


Эпилог:

Во всяком случае, умная программа, если она одобрена как финансово осуществимая. Могут понравиться другие сообщения об интеграции MT4-AI/ML с малой задержкой для алгоритмическая торговля.

person user3666197    schedule 04.12.2016