[CTP] vn.pyデビューインターフェースメソッド呼び出しのパスワードを変更します

背景

最近プレイvn.py、記事されたビルド(Windowsの場合)にvn.py開発環境は、2番目の開発環境をセットアップする過程で発生した建築環境ピットのいくつかを解決する方法について説明します。それでは、この記事では、運転中に第1の問題を解決します。

スタートvn.py

展開環境の完了後1、例/ vn_trader / run.py、ポップスタートページを開始します。具体的な構造は、リファレンス[vn.pyビルド開発環境(Windows)を処理し
ここに画像を挿入説明
、[イメージダンプ外側リンクに障害が発生し、発信局は、直接アップロードダウン画像を保存することが推奨され、セキュリティチェーン機構を有していてもよい(IMG-gVeJW6uG-1579739463717)( / IMG / bVbCUI6) ]

2。接続CTPは、クリックする系统->连接CTP接続インタフェースを起動します。

[画像ソースステーションは、セキュリティチェーン機構を有していてもよい、チェーンが失敗したダンプ、ダウンした画像を保存することが推奨される直接アップロード(IMG-rWZxjhHp-1579739463719)(/ IMG / bVbCUJg)]
フィールド導入する3.
ユーザー名simnow登録:ユーザー名6位数字
パスワード:パスワードのsimnow使用
のブローカーコード:9999
Transaction Serverのアドレス:180.168.146.187:10101
引用サーバーアドレス:180.168.146.187:10111
製品名:simnow_client_test
認証をコード:000000000000000016个0

4.ユーザー名とパスワードを入手
の上の右から、http://www.simnow.com.cn/を記録するために注册账号、ここでの話ではない運転開始、我々はそれをいじくり回すに所有しています。

質問です

すべての準備作業の後、リンクをクリックし、左下隅には、ログを表示します。
[画像ソースステーションは、セキュリティチェーン機構を有していてもよい、チェーンが失敗したダンプ、ダウンした画像を保存することが推奨される直接アップロード(IMG-yzbUkijc-1579739463720)(/ IMG / bVbCUKz)]
初めてログインしている場合は、プロンプトが表示されますCTP首次登陆需要修改密码今日解決すべき問題です、

解決しようとすると、

刚看到这个问题觉得没什么,修改一下密码就可以了,但是。。。。。
首先没有再vn.py上找到可以修改密码的地方,后来想了想,也正常人家只是策略平台,也不仅仅是给CTP用,
所以去注册的地方simnow官网找找吧,但是。。。。
很遗憾仍然没有找到,这里不得不吐槽一下simnow了。是不是应该给个改密码的地方?

据说可以使用市场上的交易应用修改密码,大家可以去试试。或者大家有更好的方法也可以回复留言。

开始撸它

好吧,那么我们用程序员的方式来解决这个问题吧。

1.在vnpy/api/ctp目录下可以看到完整ctp开发的api,包括库和头文件。哈哈,是不是会让你产生非分之想?
2.我们在ThostFtdcTraderApi.h中发现了我们想要的东西

///用户口令更新请求
virtual int ReqUserPasswordUpdate(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, int nRequestID) = 0;

3.找到ctp api文档在simnow官网上可以找到,我这里用的事《综合交易平台TraderAPI接口说明.pdf》
4.开始撸代码吧,我先是在linux开始撸,后来发现我的操作系统编译器版本太低,当然升级版本应该可以解决,但升级gcc,glibc还是相当耗时的。所以后来移植到了windows,但工程还是linux风格,使用cmake构建,好在现在vs对cmake支持的不错。
5.继续撸,先贴一段吧

#include "ctp_trade_handler.h"
#include "INIReader.h"
#include <iostream>

int main(int argc, char* argv[])
{
	string a;

    INIReader reader("../conf/ctp.ini");
    if (reader.ParseError() != 0) {
        std::cout << "Can't load 'test.ini'\n";
        return 1;
    }
    std::cout << reader.GetInteger("user","BrokerID",9999) << endl;
    ctp_trade_handle ctp;
    ctp.CreateFtdcTraderApi();
    ctp.RegisterFront("tcp://180.168.146.187:10100");

    ctp.init();

    //CThostFtdcReqAuthenticateField reqAuthenticate = { 0 };
    //strcpy(reqAuthenticate.AppID, "simnow_client_test");
    //strcpy(reqAuthenticate.UserID, "158477");
    //strcpy(reqAuthenticate.AuthCode, "0000000000000000");
    //strcpy(reqAuthenticate.BrokerID, "9999");
    //ctp.ReqAuthenticate(&reqAuthenticate, 1);

	CThostFtdcReqUserLoginField reqUserLogin = { 0 };
    strcpy(reqUserLogin.BrokerID,"9999");
    strcpy(reqUserLogin.UserID,"158477");
    strcpy(reqUserLogin.Password,"qwe123");
    ctp.ReqUserLogin(&reqUserLogin, 1);

	std::cout << "input new password : ";
	std::cin >> a;
	CThostFtdcUserPasswordUpdateField reqUserPasswordUpdate = { 0 };
	strcpy(reqUserPasswordUpdate.BrokerID, "9999");
	strcpy(reqUserPasswordUpdate.UserID, "158477");
	strcpy(reqUserPasswordUpdate.OldPassword, "qwe123");
	strcpy(reqUserPasswordUpdate.NewPassword, a.c_str());

	ctp.ReqUserPasswordUpdate(&reqUserPasswordUpdate, 3);

	std::cin >> a;
    ctp.exit();
    return 0;
}

代码很简单,这里就不多说了。目前只是为了解决我修改密码的需求,后续还会不断完善。
如有需要可以自己取来撸,代码托管地址:https://github.com/FrankXMX/ctp.git
欢迎watch和star
6.使用上就是填写好你的相关信息,编译运行,输入新密码。得到屏幕输出。
7.回到vn.py,使用新密码重新连接ctp。

大功告成!!!

リリース元の2件の記事 ウォンの賞賛0 ビュー29

おすすめ

転載: blog.csdn.net/xk_xx/article/details/104073968