2

Maintenanceサイトから" " 値を取得する方法

ここに画像の説明を入力

MQL4スクリプトを使用していますか?

私が理解しているように、インターネット接続を設定し、サイトからデータを取得し、解析してデータを取得する必要があります。

私がそれを行う方法はありますか?

どんな例でも感謝します。

4

1 に答える 1

3

事実 #1: MQL4 構文は外部サブプロセスの呼び出しを制限します:

これは、(DLL 回避策を使用しない場合) タスク全体でホイールを再発明し、MQL4 内で HTML パーサーを構築する必要があることを意味します。実行可能ですが、誰のリソースも無駄にします。

事実 #2: より良い選択方法があります。

DLL インポート機能を使用する場合、MQL4 コード実行制限をバイパスし、Windows-API サービスを呼び出してサブプロセスをフォークし、物事を前進させることができますが、私の意見では、Windows-API はむしろ豊富なインターフェース フレームワークを備えていますが、基本的なサービスへのかなり低レベルのアクセスのためです。そのため、MQL4 サンドボックスの制限から「外に」、再びホイールを再発明することができます。

私たちの想像力を制限しなければ、あなたのプロジェクトは Python でのラピッド プロトタイピングの恩恵を受け、異機種の Python / MQL4 環境でピアツーピア分散メッセージング/コントロールをセットアップすることができます。

他の利点に加えて、( だけでなく) スマートで強力な Web コンテンツ処理における Python の強みはすばらしいため、この分散型アプローチは MQL4 プロジェクトを戦略的に新しい、目に見えない次元へと導きます。


Python のスマート スクレイピング (ばかげたものではありません):

def askAtPublisherWebURL( aControlDICT,
                          aURL             = "https://globalde?.?.?.?y?.com/en/products/.../...-DLON?Class_type=class_symbol=???&Class_exchange=???&ps=999&md=03-2014",
                          anOPT            = "ESX",
                          aMaturityDATE    = "03-2014",
                          anEmailRECIPIENT = "Me.Robot-GWY-2013-PoC@gmail.com",
                          aFileNAME        = "ESX_2014-03_anObservedStateTIMESTAMP[]"
                          ):
    import      time, urllib, re, winsound, urllib2             # late, dirty import

    try:
        aReturnFLAG     = True
        anOutputSTRING  = "|TRYING: " + aURL                    # a crash-proof proxy-value for a case IOError <EXC> would appear
      # --------------------------------------------------------# urllib2 MODE        
        anInputHANDLER  = urllib2.urlopen( aURL, None, 120 )    # urllib2 MODE with a 120 [sec] timeout before urllib2.URLError ... still gets stuck during peak-hours ( on aMaturityDATE )
        aListOfLINEs    = anInputHANDLER.readlines()
        anInputHANDLER.close()
      # --------------------------------------------------------# urllib2 MODE
    except urllib2.URLError as anExcREASON:
        aReturnFLAG     = False
                                                                # no RET here // JMP .FINALLY: to log IOError....

    except exceptions.IOError as ( ErrNO, ErrSTR ):             # an IOError <EXC> hase appeared, handle with care before JMP .FINALLY:
        aReturnFLAG     = False

    else:                                                       # no IOError or any other <EXC>, process the <content> .. JMP .FINALLY:
        # ------------------------------------------------------# HTML-processor
        # smart html-processing goes here
        # ...
        # ------------------------------------------------------# HTML-processor
    finally:                                                    # in any case do all this TIDY-UP-BEFORE-EXIT
        # fileIO + pre-exit ops
        # sendMsg4MQL() --> SIG MT4

    return aReturnFLAG # MISRA-motivated single point of RET

タカ派のPythoneerにとって、投稿では意図的にPEP-8以外のソースコード形式を使用しています。著者の経験によると、学習段階では、コードの読みやすさが課題解決への焦点を改善し、労力を費やすのではなく、根底にある概念に慣れるのに役立ちます。タイポグラフィを正式に遵守することについて。ヘルプを提供するという原則が尊重され、読みやすさという名目で PEP-8 以外のスタイル形式が許されることを願っています。

于 2015-10-05T17:35:33.467 に答える