A summary of frequently asked questions (continuously updated...)

Author: Inventors quantify - small dreams, Created: 2018-02-02 10:41:38, Updated: 2024-11-08 09:58:47

[TOC]

A summary of frequently asked questions (continuously updated...)

  • How to search for a keyword in a post? UseCtrl + fThe key opens the page search and enters the keyword for example: "hosted by hosted"; then the page will be searched for all locations that contain the word hosted.

  • Currently, FMZ International only supports digital currency operations.

  • Weighted:

    常见问题汇总(持续更新…)

The API interface

  • Why?GetTickerandGetDepthReceivedBuy oneandI sold it.How would it be different?

- ```exchang.GetOrders```得到的是未成交的挂单,那么已经成交的单子在哪里获取?
  
  查询订单还有一个API就是```exchange.GetOrder```,这个是根据```ID```查询所有类型的订单。输入订单```ID```就查出这个订单。获取成交的订单只有看交易所有没有提供这样的接口了,每个交易所可能提供的接口都不一样。

- ```JavaScript```策略时间字符串转时间戳的结果不对
  
  需要考虑系统时间设置中的时区。
  
  ![常见问题汇总(持续更新...)](/upload/asset/16483622956b63062c56.png)

- 为什么我打印出来的开盘价、收盘价都一样?
  
  1、可能是交易所这个时刻确实没交易,本身就是这个BAR高开低收一样。
  2、看下是不是观察的是最后一个BAR,在最后一个BAR生成的瞬间,高开低收是一样的。

- ```Signature not valid:Invalid submission time or incorrect time format[无效的提交时间,或时间格式错误]```,此类和服务器校对时间的错误
  
  该问题为```windows2000/2003/XP```等比较旧的操作系统的问题,参考资料:
  
  https://support.microsoft.com/en-us/help/821893/the-system-clock-may-run-fast-when-you-use-the-acpi-power-management-t
  
  建议使用```Linux```服务器,或者在这些出现该问题的```windows```系统安装时间同步软件,高频率同步时间,防止出现时间校验错误。

- 为什么麦语言的```ATR```(```TR```)计算出的数值和```TA```/```talib```库计算出来的有差异?
  
  原因是麦语言指标的计算方式和```TA```/```talib```库底层算法不一致。两者都对,算法不同而已。类似```MACD```有的用一倍的```DIF-DEA```,有的用两倍的```DIF-DEA```,都是对的。

- 交易所名称为```Futures_Esunny```的代表的是什么?
  
  代表**易盛协议**的交易所对象,可由```exchange.GetName()```函数返回。
  目前FMZ国际站仅支持数字货币业务。

- 麦语言多周期引用数据,在多周期引用代码块内```#EXPORTTEST...#END```声明好变量后。在策略中引用时使用了```REF```,就会按照当前的周期去引用数据导致和想象中的不一样。
  
  所有需要的多周期数据,在```#EXPORTTEST...#END```中处理好,在外部只直接使用。

- 找不到FMZ API文档了
  
  可以直接输入页面地址:https://www.fmz.com/api,或者如图点击链接:
  
  ![常见问题汇总(持续更新...)](/upload/asset/cb2bbc8b5965d8a0418b2dd62925c38d.png)

- 为啥```MACD```跟交易所算出来的值不一样?
  
  对比时需要注意是否K线周期一致,```MACD```指标参数是否一致,时间段一致,品种一致,此外```MACD```的量柱算法有多种。有的是```DIF-DEA```,有的是```2*(DIF-DEA)```,```DIF```和```DEA```应当是一致的。

- 请问获取历史K线数据的时候,获得的K线数量跟什么有关?
  
  在访问```exchange.GetRecords```接口获取K线数据时,具体接口返回的K线数量是交易所定的。可能每家交易所的返回的K线数量都不一致(甚至有些交易所没有提供K线接口,此类情况托管者在策略调用```exchange.GetRecords```的时候会调用获取交易所交易历史数据的接口根据交易历史合成K线)。托管者接受到的K线会持续累计在一起,需要有一定频率的去访问```exchange.GetRecords```接口,否则可能会影响数据的持续性。

- 我看API文档执行```exchange.Buy```函数只会返回```ID```,怎么会返回那么多信息?
  
  FMZ的API函数中可以产生日志输出的函数例如```Log```、```exchange.Buy```、```exchange.CancelOrder```等都可以在必要参数后跟一些附带输出参数。例如:```exchange.CancelOrder(orders[i].Id, orders[j])```这样就是在取消```orders[j]```这个订单时,附带输出这个订单信息。

- 实盘如何微信推送信息?

  只有实盘有效,在```Log```函数最后加上字符```'@'```即可推送该条```Log```函数打印的信息,详见API文档:https://www.fmz.com/api#Log
  目前FMZ国际站仅支持数字货币业务。

- ```exchange.GetAccount```这里获取信息会不会因为网络等其他问题造成获取失败,FMZ系统底层是已经有对失败做处理了?还是用户必须自己处理请求失败的情况?为什么官方不做出处理呢?这样用户使用的时候不是更方便吗?
  
  会有失败,需要用户容错处理。FMZ底层不处理数据,反馈给用户的是未加工过的数据,具体容错方式或者逻辑由策略制定。如果这个处理了可能会影响用户决策,决策交给策略处理,具体是**过滤错误信息**还是**重试**等等处理方式。

- OKEX合约下单量是什么单位?是币数还是合约张数?
  
  OKEX合约交易下单量在FMZ下单时是按合约张数,例如```exchange.Buy(1000,1)```就是下价格为1000,量为1张合约的订单。

- 在FMZ上调用```exchange.Sell```和```exchange.Buy```是下普通限价单吗?
  
  具体是看传入的第一个参数(第一个参数是下单价格)。部分交易所支持市价单,价格参数传入```-1```即为下市价单,买入和卖出量的意义有些不同(第二个参数),价格不是```-1```就是限价单。大部分现货交易所下单接口,市价单买单的下单量都是**金额**并非**币数**。数字货币期货交易所下单接口,下单量一般为合约张数是整数。
  参看下单接口:
  https://www.fmz.com/api#exchange.buyprice-amount
  https://www.fmz.com/api#exchange.sellprice-amount

- Mail函数

Mail(“smtp.qq.com”, “xxxx@qq.com”, “xxx”, “xxx@qq.com”, “test title”, “test body”)

  访问QQ的smtp 203.205.232.7 超时,目前绝大多数云服务器基本都屏蔽了25端口,除非实体服务器,运营商基本不会屏蔽25端口的。 绝大多数云服务器,也可以申请解封25端口,我就是申请然后解封的。

- Pine语言、麦语言的模板参数:变量最长周期数会影响指标计算
  
  默认这个「变量最长周期数」为600,如果指标参数设置过大,例如计算MA(1000)。则由于系统只保留了600个数据,无法计算出1000个数据的均值。

## 报错
- InternalError: arg1 type error
  触发场景:
  ```js
  function main() {
      _G(11212, "123")
  }

- 无限递归调用错误:signal arrived during external code execution
  
  根据该特征判断:Exception 0xc00000fd

  ```run 
  Exception 0xc00000fd 0x1 0x5cdd203f40 0x1ee5955
  PC=0x1ee5955
  signal arrived during external code execution
  • The hard disk page will have console output information (runtime error), such as an example of triggering a memory overflow:
  def create_large_list():
      large_list = []
      while True:
          large_list.append(" " * 1024)  # Append a string of 1024 bytes to the list
          print(f"Current list size: {len(large_list)}")

  def main():
      create_large_list()
  • Syntax error: variable name expected

Check for error prompts in the policy code editor area, check for var name = a when forgetting to write name (no variable name) ; check if the programming language keyword was used when setting the policy interface parameter, it is not recommended to use a common programming language keyword for variable naming, which can easily cause conflicts (even if the current programming language does not have this keyword).

  • BITMEX429 mistakes, and it's not a good idea.{"error":{"message":"Rate limit exceeded retry in 1seconds……"}}

Seeing a 429 error means that the frequency of access to the exchange interface is too high.

  • The real thingBittrexThe error message:{"success":false,"message":"NOT_ALLOWED","result":null}

The exchange has restricted permissions, sign inBittrexThe exchange's website, to see if you need to check for information such as user agreements.

  • I've been trying to get a copy of this file.TypeError:value has no property at

常见问题汇总(持续更新…)

The error message is different from the real-time error message, so the error message cannot be detected by the retest.

  • unable to open databaseReported error

常见问题汇总(持续更新…)What if it was an Apple computer?Mac OSPlease check to see if this is a permission issue. The device's hard disk is full of space and the database files on the hard disk cannot be created, causing an error.

  • The error message:不支持该功能

The exchange object added during the retest is the digital currency spot exchange, which calls the API function of the futures in the code.

  • The error message:in SetCurrency OSError: exception: access violation reading 0x000000FCF25F0000

In addition, the number of digital currency futures is increasing.PythonThe strategy is to use private hosts to switch the transaction to error messages in the code. The reason is that the retesting system does not support digital currency futures retesting swap pairs.

  • Error report decrypt [Picture from the video]常见问题汇总(持续更新…)An error was reported due to a modified password for the FMZ account, which caused the configured API KEY to fail. Solution: Re-configure the exchange API KEY, stop the custodian, restart the custodian, and then try to start the live disk again.

  • PythonLocal retrieval engine, error reportingEOFerror

  
  ```python
  # encoding: utf-8  

  '''backtest
  start: 2021-08-30 00:00:00
  end: 2022-09-05 00:00:00
  period: 1d
  basePeriod: 1h
  exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
  '''

  from fmz import *
  task = VCtx(__doc__)             # initialize backtest engine from __doc__  

  def main():  

      while not exchange.IO("status"):
          Sleep(1000)
      exchange.SetContractType("swap")
      
      while True:
          bars_1min = _C(exchange.GetRecords, PERIOD_M1)    # 获取1minK线              
          print(len(bars_1min))
          _CDelay(2000)      

  # 调用主函数  

  try:
      main()
  except:
      print(task.Join(False))
  • The Mac language involves a very subtle problem of cyclic computation, where the calculated value may have N/A, for example:

常见问题汇总(持续更新…)

The reason is that the calculation cycle parameter is beyond the data range, which leads to the calculation of the N/A value.

常见问题汇总(持续更新…)

  • Error reporting in the Mac language: parsing error, and the policy is only simple code, error reporting line number is long position, can not find the reason.

This may be a problem with early Mac language templates. Solution: 1. Export the policy to an xml file. 2. Create a new empty Mac language policy. 3. Import the xml file into the newly created empty policy.

  • The error message:fatal error:unexpected signal during runtime execution...go routine 11[syscall,locked to thread]

The inspectionC++Is the written policy using blank pointers, and it is recommended to retest the check using an error tolerance mode.

常见问题汇总(持续更新…)

  • Callingexchange.SetMarginLevel(10)The error message:Futures_OP 0:403:{"error":{"message":"Access Denied","name":"HTTPError"}}

Examining an exchange applicationAPI KEYIf the permissions are enabled.

  • This is a mistake:symbol not set

There are no contracts set in the futures exchange's callback code, see API documentationexchange.SetContractTypeThe function ≠ ∞

  • ERR_INVALID_POSITIONMistakes

The response system reports errors, usually written errors for strategy. Attempting to close a position without a holding or with an insufficient number of holdings will cause this error, and checks whether there is a position freeze resulting from an outstanding order.

  • ERR_INVALID_ORDERMistakes

Error reports, generally written for strategy, be careful to check the price of the order (the digital currency futures are temporarily not supported by the market list), whether the order volume is 0 or negative or decimal (the futures contract is a contract number is an integer).

  • ERR_INSUFFICIENT_ASSETMistakes

The error in the feedback system is usually the number of available assets that are already less than the number of assets that are currently required for the order; simply put, there is no money to order.

  • Binding Error:Cannot passnon-string to std::stringError reports

In policy code, it is common for an attribute name (using an undefined attribute) to be used incorrectly.

  • {"status":6004,"msg":"timestamp is out of range"}Mistakes

The server timestamp is out of range and needs to be updated to the server time, which cannot deviate too much.

  • timeoutMistakes

The error is a timeless error, which is caused by the failure to receive exchange interface response data for more than a certain time after accessing the exchange interface. It is usually a network access problem in the system where the custodian is located (many of which are caused by wall problems) or a problem with the exchange interface. The general solution is to run the custodian using servers in other overseas regions.

  • Error reporting when running a hard drive after writing a policy:syntax error invalid label

The root of the problem:

  function main(){
      if(1){
          continue
      }
  }
  //这样会导致运行时报错

- 报错:```400:{"error":{"message":"Nonce is not increasing.This nonce:1523891993165,last nonce:1523891993165","name":"HTTPError"}}```
  
  关于```nonce```校验的错误,报错信息上有关```nonce```通常是时间戳校验不通过,尝试同步一下该实盘使用的托管者所在系统的时间。

- ```Secretkey decrypt failed```错误
  
  ![常见问题汇总(持续更新...)](/upload/asset/345be4d2aa663dd2c02cf5b97f95ce03fc0a7378.png)
  
  这个报错是说```API KEY```解析失败。检查是不是配置了```API KEY```后修改过FMZ账号的密码,尝试在FMZ平台添加交易所的页面重新配置交易所的```API KEY```并且重启托管者,然后重新运行实盘测试。

- 请问使用```exchange.Getorder```经常报出这个错:```GetOrder(455284455):Error:invalid order id or order cancelled.```有可能是什么原因呢?
  
  字面意思:订单已经取消或者订单ID无效。原因:有些交易所订单取消了交易所就不再维护这个订单信息了,就清除了。所以你在```exchange.GetOrder```查询这个订单就报这个错误,或者本身查询的这个ID就是错误的。

- rate limit, 429 Too Many Requests(太多请求) 报错
  
  ![常见问题汇总(持续更新...)](/upload/asset/65057d99e2acdf9e237130ae7dc8082d333dc36b.png)
  
  ```rate limit, 429 Too Many Requests(太多请求)```
  策略中访问交易所接口频率过于频繁,降低访问交易所接口的频率。

- 回测和实盘时候总是显示```Invalid order price/amount```
  
  此类问题是由于调用下单函数```exchange.Buy```或者```exchange.Sell```时传入的价格和下单量数值错误引起的。对于**负数下单量**、**0**等检测错误方法:可以在```exchange.Buy```或```exchange.Sell```下单前调用```Log```函数输出下即将传入的价格参数或者数量参数,确定下问题。

- ```GetOrders:400:{"code":-1121,"msg":"Invalid symbol."}```这是什么错误?
  
  这个报错是说:**无效的交易对**。您检查下是不是交易对设置错误了。

- 实盘日志上报错有些错误码是什么意思?
  
  各个交易所API接口返回的错误码解释需要看下交易所API文档。

## 实盘

- Pine语言、麦语言实盘收益曲线打印时间
  根据Pine语言/麦语言模板参数上的设置定时打印,策略完全平仓时也会打印。

- 麦语言实盘打印了信号触发行数,但是没有任何下单操作。
  
  可能是麦语言模板参数设置不合适,例如精度、最小下单量精度等参数。原因是信号触发层判断成功,到了交易执行层由于参数某些问题导致判定为不可下单,进而没有实际下单。
  参看麦语言相关帖子:
  https://www.fmz.com/digest-topic/5789
  https://www.fmz.com/digest-topic/5768

- 我设置好Tradingview上的webhook url报警,为什么实盘(机器人)收不到请求信号?

  检查webhook url这个设置的地址里,API KEY 是否正确。这里的API KEY指的是FMZ的扩展API KEY,在FMZ右上角账号设置里设置。检查webhook url里面的实盘ID是否填写正确。 检查FMZ的扩展API KEY权限是否给与正确。权限是英文逗号间隔,默认是\*,即所有权限,不要直接在\*后面写给与权限的函数名。

- 创建实盘时交易所对象配置上为什么只有有限的几种货币对?实际交易所是支持很对交易对的。

  设置交易对的自定义控件(只有实盘可以,回测时数据中心的数据只有有限的品种,并不能自定义设置),如图:
  
  ![常见问题汇总(持续更新...)](/upload/asset/16afb4b09e20bfec9c3f.png) 

- 为什么在服务器上运行FutuOpenD(富途)获取不到行情,在本机上的可以获取到?

  检查服务器是否是海外IP地址,富途对于海外IP有限制。  

- 麦语言策略运行了一直不动,就开始更新了一下行情,是什么问题?
  
  检查是不是使用的收盘价模型,检查设置在策略麦语言模板参数上。

- ```BITMEX```交易所K线数据时间戳为什么比其它交易所相同位置的Bar多一个周期时间?
  
  原因是```BITMEX```交易所的K线时间戳是以当前Bar的结束时间作为时间戳的(有些K线周期```BITMEX```交易所接口没有支持,所以这些周期的时间戳是以Bar起始时间作为时间戳的)。例如右图:
  
  ![常见问题汇总(持续更新...)](/upload/asset/f519d92db5a85617032f225ca88a6b6f.png)

## 回测系统

- 回测系统报错:Exception catching is disabled

Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.


  检查是否使用了「自定义数据源」功能,自定义数据源服务提供的数据是否正确,引发该报错的原因可能是异常的回测行情数据。

- 如何测试手续费是taker/maker?
  手续费 taker/maker 测试场景

/*backtest start: 2022-11-08 00:00:00 end: 2023-02-08 00:00:00 period: 1h basePeriod: 15m exchanges: [{“eid”:“Binance”,“currency”:“BTC_USDT”}] */

function main() { var t = exchange.GetTicker() exchange.Buy(t.Last - 10, 100/(t.Last - 10))

  while(1){
      t = exchange.GetTicker()
      Sleep(1000)
  }

}


- 币安期货、```BITMEX```回测,资金费率是否算入回测系统生成的盈亏曲线?
  
  资金费率是算入回测系统生成的盈亏曲线的。

- 回测按钮显示不可点击

  ![常见问题汇总(持续更新...)](/upload/asset/16d0e0e50cf0b4788834.png) 
  检查是否开了代理,导致回测页面文件加载不完整,检查页面控制台是否有报错信息。

- **实盘级Tick**回测时,为什么有50MB的限制?

  实盘级别回测, 就是这个实盘级Tick, 行情数据是逐秒的,真实记录。 并且还有盘口快照, 订单流数据, 这些数据量非常大, 只支持 50MB的数据量。 也就是说 实盘级别回测 ,范围最多几个小时, 无法长时间范围回测。主要用于测试高频策略。

- 回测系统修改了手续费,为什么不起作用?
  
  ![常见问题汇总(持续更新...)](/upload/asset/16b695e2eb573febe865.png) 
  
  回测系统中,界面上设置手续费,只有添加上才生效,之前添加的交易所对象是无法通过界面上的控件直接修改的。

- 怎么才能让回测自定义画图显示的数据多一点?
  
  自定义图表画图时(```Chart```函数),画图在回测时候显示的数据量和回测设置上的**图表**参数有关,控制图表显示最大条数。注意是否使用了```chart.reset```函数清空了部分旧数据。

- ```C++```回测什么都不显示,也没有报错信息和日志,点击按钮后页面没有变化
  
  ```C++```策略一些异常不抛出错误,用排除法逐级检查代码可能的运行时错误。例如:指标计算时K线数量不足导致的指标算出```NAN```后```NAN```和数值类型做比较判断,引起程序崩溃。

- ```python```回测卡死!
  
  不能在```try```异常检测里面写```Sleep```函数,如图的写法就会卡死。
  
  ![常见问题汇总(持续更新...)](/upload/asset/681fe9b42d71ce056e8c931ac0c12650.png)

- 为什么回测的时候只有几个交易所,交易所的交易对也只有有限的几种?
  
  交易所的交易对太多了,所以在回测系统只选择了几种有代表性的交易对用来测试。可以选择情况相近的交易对回测,在实盘的时候是完全可以用**自定义控件**设置交易所支持的交易对。

- 回测系统为什么不支持多些交易对?
  
  回测系统暂时只支持一些比较大的交易所的主流币种,有些币种暂时还没支持。如果需要检验策略可以在回测系统中用其它币种代替测试。其实数字货币用不同币种测试除了行情因素,对于检验策略还是可以的。简单说就是回测系统尽量把主流交易对支持,回测不应当拟合具体某个品种。就是说如果策略有效,哪怕是一系列有交易规律的随机生成的行情变动,或者是其它币种行情,都应该是有基本上正向收益的的表现。这个就是策略的普适性,如果只能拟合一段历史数据或者在某个品种表现不错,那这种策略实际上是有潜藏风险或者有缺陷的。

- 回测系统中:**平仓盈亏**、**持仓盈亏**、**保证金**、**预估收益**、**当前可用的USDT**的概念
    
  平仓盈亏:就是当前持仓之前的所有交易开仓,平仓时,产生的盈亏,是所有累计的盈亏。
  持仓盈亏:就是当前持仓的盈亏,如果当前没持仓,就是0
  保证金:当前持仓的仓位占用的保证金数额
  预估收益:把当前持仓按照当前价格(假设)平仓,产生的盈亏,再和平仓累计的盈亏相加,算出预估的收益。
  当前可用的USDT:当前可以用来开仓的USDT数额。

- 回测系统胜率计算
  

for (var i = 0; i < profits.length; i++) { if (i == 0) { if (profits[i][1] > 0) { winningResult++ } } else { if (profits[i][1] > profits[i - 1][1]) { winningResult++ } } if ((profits[i][1] + totalAssets) > maxAssets) { maxAssets = profits[i][1] + totalAssets maxAssetsTime = profits[i][0] } if (maxAssets > 0) { var drawDown = 1 - (profits[i][1] + totalAssets) / maxAssets if (drawDown > maxDrawdown) { maxDrawdown = drawDown maxDrawdownTime = profits[i][0] maxDrawdownStartTime = maxAssetsTime } } }

   
  上面是胜率算法,描述一下是这样计算的:
  在回测系统定时计算浮动盈亏后,统计出一条浮动盈亏曲线。从第一个点开始对比下一个点,如果高于则记录为胜,低于记录为负,然后用下一个点往后继续对比。

## 托管者

- FMZ平台上托管者显示离线,服务器上托管者robot程序被停止
  在linux操作系统,有可能内存不足导致托管者被系统停止。触发原因:
  1、策略过度使用硬件资源。
  2、策略Log输出了一个非常大的内容。
  3、托管者所在设备上运行了过多的策略实盘。
  4、其它(补充中)

- MAC电脑运行托管者时报错:dyld: cannot load (load command is unknown)
  

dyld: cannot load (load command is unknown) “`

The operating system version is too low.

  • LinuxWhere is the video deployed by the system administrator?

Link to station B:https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web

  • Is it necessary to stop the old host and then delete it?robotThe program, and then run it again?

You can delete the old one without stopping the host.robotThe program file, then download the new compression package, decompress the new onerobotThe program file, put in its original location. At this time the host updates, but the old version of the disk used in memory is still in operation, and only the latest version is used when the disk is restarted.

  • LinuxDeployment by server administrators

LinuxInstall the host steps:https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web

  • UsescreenRunning the AdministratorrobotI'm not going to lie.-bash:screen:command not foundThe host can't run.

LinuxSystem not installedscreenThe software, usually installed.CentOSInstallation commands for the system:yum install screenI'm not sure. The current trustee has already supportedSSHDisconnect to run in the background.screenThis tool is used in the Administrator program.robotUse the command directly in the directory:./robot -s node.fmz.com/xxxxxxx, then enter the account password of FMZLogin OKThis is the key to successful deployment../robot -s node.fmz.com/xxxxxxxThe xxxxxxxx is the unique identifier of each FMZ account, which can be entered by itself (after logging in to the account, skip to the host page, click Add a host, skip to the Add a host page to see), and is not to be entered here.xxxxxxx

  • Where are the logs of the hard drive when the administrator is running?

Directory where the trustee program islogsIn the folderDB3In a database file, the database file is called a hard drive.idThe extension is calleddb3

  • LinuxUnder the system./robot -lSee the names of the exchanges supported by the custodian, which appear in theexchangeWhat is an exchange?

NameFor theexchangeThe exchange's object codeGeneral agreementThe exchange that accessed the General Protocol details:https://www.fmz.com/api#%E9%80%9A%E7%94%A8%E5%8D%8F%E8%AE%AE

  • Administrator page Administrator cannot be displayed by list

If you add more than 5 hosts, the controls will appear in the list.

常见问题汇总(持续更新…)

  • Is it normal to have a host that you deploy in the drop-down box that hosts choose when you create a virtual drive?

The public hosts provided by the platform are a quick and easy tool to add for beginner users. It is easy to learn without deploying hosts. However, real-world testing still recommends using private hosts, after all, the hardware resources and networks of public hosts are shared, and the platform may not regularly maintain these public hosts.

  • The address string when deploying the host (((./robot -s node.fmz.com/1234567I'm the only one, right?

This address is each user's own address ID./1234567The value of the part is unique and is used to identify the user.The control center->Click on the Add Administrator button->Adding a host pageIf you want to see the address, you can copy and paste it directly and use it.

  • Added environment variables for the host systempython2.7I'm not sure why I can't find the environmental variables.

常见问题汇总(持续更新…)

windowsSystem first installedpython, the environment variable needs to be restarted after setting it.

Research environment

  • EOF error

常见问题汇总(持续更新…)

python feedback is terminated by an EOF exception (because sometimes the policy may be a dead loop); hence the suggestion that EOF anomalies are normal.

Platform features

  • Can one host run multiple disks?

There is no limit to the number, specifically depending on the server configuration and the complexity of the policy, specifically considering whether these multiple disks all access the same exchange interface (considering the frequency of interface calls, the more frequencies the higher), generally 5-6 disks is not a problem.

  • Understanding basic concepts such as custodians, disks

https://www.fmz.com/digest-topic/7542

  • Disks, hosts, all content disappeared

The hard disk, the host page, all the content disappeared, the hard disk is running normally, the host is running normally on the server.
Check the browser error message to see if the browser has plugins installed, global variable pollution problems caused by plugins. The solution is to write in the browser plug-in, or log in to FMZ using a browser without any browser plug-ins installed.

  • Official policy for renting, one-click deployment of rental servers, automatic renewal as long as the FMZ account balance is sufficient?

Rental policies are not automatically renewed, and host servers deployed with one key are automatically renewed.

  • Where is the template function? I want to put some functions separately in the template, other strategies are also useful to refer to.

FMZ APIThe documentary explains:https://www.fmz.com/api#%E6%A8%A1%E6%9D%BF%E7%B1%BB%E5%BA%93

  • FMZ analogue dishwexAppIt's like an exchange, you can only choose.BTC_USDTHow do I customize other transactions?

wexAppThe analogue disc currently supports only a few mainstream pairs, and not all pairs are analogue.

  • Problems with extended API concurrent calls, which always report announce validation errors.

You can create extensions for multiple FMZ platformsAPI KEYThis is the first time that a user has been able to use the app to make a request.

  • Does the debug thread created on the host record the status when using the debug tool?

When the debugger is executed, the previously created exchange objects are retained and not released if nothing is changed the second time. So some states are recorded, for example the exchange object is currently used as aThe coin modelOrLeverage mode

  • Why I signed upwexAppSo what if you log on to an analogue exchange and there are no assets, no wallets and no coin zones?

After registering, you need to verify your account to activate your account in the personal center.

  • The longer log information is cut off and shown on the back... but what about the structure of the data?

Solutions and usesThe control centerWhat?Debugging tools, used in debugging toolsreturnThe statement returns the content that needs to be displayed, without interrupting the content shown.

  • JavaScriptIn the strategy$.What does the function that starts with mean?

$.The starting function is the output function of the template, which is the interface function of a module. See the description in the API documentation:https://www.fmz.com/api#%E6%A8%A1%E6%9D%BF%E7%B1%BB%E5%BA%93 pythonThe output function of the editing policy starts withext.This is a statement by the group.

  • How to draw a straight line on the market data graph of retest results?

There are two types of graphs that are displayed when retested: one is system-generated and not controlled by the policy; the other is an API interface with FMZ inside the policy code.ChartFunctional drawing. See also:https://www.fmz.com/api#chart...

  • I deleted Google Authenticator on my phone by mistake, how to reset Google Authentication? You can log in to the FMZ platform using a different browser, and click "Unbind" to jump to the unbinding page using the mailbox when you need to enter a Google verification code.

Other

  • The ExchangeAPI KEYSecurity

UsersAPI KEYIt is uploaded in browser-side encryption, FMZ does not store explicit user account information, and usesHttpsThe agreement.

  • The security of the strategy

The question can be found at:https://www.fmz.com/bbs-topic/1657

  • FMZ platform billing system, billing mechanism

The standard of real-time billing: 1, a real disk is charged once an hour ((0.05 USD/hour)), and one hour of usage time is purchased. 2, Stop within one hour, Restart the hard drive without recharging. 3, the real disk has been stopped, the next hour will not trigger the charge. 4, newly created disks will be charged immediately for one hour.

常见问题汇总(持续更新…)

This billing time is the processing time of billing operations, because these processing operations will be time consuming, so the time of deduction may be delayed. For example, the current billing time is 9:00, it is possible to process this billing operation at 9:02 (the time shown in the screenshot), which will be corrected at the next billing operation (the next billing time is 10:00, not advance billing).

  • talib library processing data with limited accuracy

If the data is particularly small, it ends up being 0⋅. See also:https://github.com/TA-Lib/ta-lib-python/issues/157

  • Real-time charge for billing programs, one-time charge for more than one hour ((0.05USD) The reasons for this may include long-term communication disruption between the custodian and the FMZ platform (during which the physical disk interacts directly with the exchange, so the execution of the policy is normal), deduction accumulation, deduction delays, and one-time settlement deduction.

  • E-mail at the time of re-registration If the mailbox is lost, it is necessary to reset the mailbox bound to the current FMZ account, submit work forms with the FMZ account, submit a screenshot of the historical loading record, verify other information, and reset the mailbox address after manual verification.


Related

More

smh941022The system detects the session

smh941022The system detects the session

vg80771610I have a hard drive that won't open. What's the situation?

18803662506How is the account balance transferred?

StalkerThe real-time model has been selected at the time of the pine retracement, why does the retracement chart show the closing price flat, the real-time price open?

IssacFutures_OP 4: 400: {"code":"50000","data":[],"msg:"Body can't be empty. "} shows what the following exception means.

xaifer48Does py support this sympy library?

xowoxRecharging

yingjunBuy ((-1, 6): 400: {"code":-2022, "msg:"ReduceOnly Order is rejected. "} What is the error?

DXM time out

ohduringCustody

eth8888Using the Mayan language strategy, for a bullish or bearish position, hold the reverse position and then stop the strategy.

GraysonZHello, does the inventor have a wrapped function to get the funds rate for retesting?

huangsongxinSimulated

CarelessnessI want to ask you, when you get the real-time data on the k-line, why is it that the Python mapping library is messed up, and the backtest doesn't have this problem?

ttry1 Traceback (most recent call last): File "<string>", line 1615, in Run File "<string>", line 146, in <module> File "<string>", line 138, in main File "<string>", line 115, in trace KeyError: 43999.96000000001

389230565/upload/asset/1e5e44ad18aab047782b6.jpg The newly opened hard drive shows this error after a few hours, what is the reason?

Roasted cabbageHow can I get USDT scraping history data for Bitcoin U-bit contracts without finding API?

wxb1888Can not charge

gaoyaxing24Does Python not have a class library reference function?

zld123123Hello, a simple linear strategy, when running it will appear to start one line normally for a period of time, signal for a period of time to connect two lines, and ask for help.

cuteHello, when the futures are simultaneously open multiple positions and empty positions, position[0].profit can only get floating gains of multiple positions, so how to get floating gains of empty positions?

zhangmintaoHi, I'm really looking forward to this.

The coin tossThe web page, the login does not go up, it is always in the login, the scanning code of the two-dimensional code of the login does not appear, is the browser the reason?

efc645cgxWhy can't the forum post?

zhousoneCan a public host run a real-time robot?

Feathers on sheepIs the exchange.GetAccount (()) only going to get the initial set amount when retested? If I use the exchange.buy in the policy, is this returned Balance not going to be updated?

The bone knifeI don't see where the answer to this question is.

wwq4817Please tell me how to fix this situation???????

17606551005fmz/upload/asset/175f0fef6971c19389a0c.png /upload/asset/17633f3636a154477bb5a.png /upload/asset/1764cf80d829ca5ed5a6e.png /upload/asset/17667f2629b47a011bb8f.png /upload/asset/17667f2629b47a011bb8f.png /upload/asset/1764cf80d829ca5ed5a6e.png /upload/asset/17667f2629b47a011bb8f Why can't getposition get hold of empty listings?

Mrhuang00main:102:18 - TypeError: method.apply is not a function please what is this problem?

bamsmenSome of the templates you see use these functions _.each() _.contains() _.last() Please ask _.where is this object defined?

dsaidasiIn my language, as if you can only wait for the k-line to finish before entering, can't set a price, can't break that price and enter immediately?

The Gilded AgeInitialization phase of the strategy: want to do exchange connectivity, API effectiveness testing, how to write?

dsaidasiCan your robots connect to these walled exchanges like Token and OK? And if I have a bot host, does my own computer need to be turned on 24 hours?

wufuhao100wThe description of the problem is found here... but the answer to the question is no... drunk...

xiaoyi007The robot started reporting errors. Traceback (most recent call last): File "", line 1028, in __init_botvs__ File "", line 11, in ImportError: DLL load failed: Ҳ ģ 2019-05-22

pixiu777What are the specific uses of multi-threaded

moneymonsterI want to know why exchange.Buy ((-1,1) re-tested, only bought 0.0 few coins each time, instead of buying one.

jeffzhMy strategy needs to store transaction data for later computational analysis, how do I implement data storage and analysis in my strategy?

13036897450I want to get the real-time P/E ratio of the open positions in the ok contract and the expected price of the strong parity.

13036897450GetOrders: Ret: map[result: false error_code:10007] What is the reason for this?

The Yellow SwanERR_INSUFFICIENT_ASSET and TypeError: Cannot convert "null" to double What is wrong?

MrkoengSo if you want to get the value of K, you want to get the value of D, and you want to get the value of K, you want to get the value of D.

1095176636@qq.comI want to delete the data, but why is it terminated every time I want to do it?

qhh87There is a US public server on the platform, but can't connect to the OKEX platform? I tried and it also shows timeout timeout.

1095176636@qq.comWhy is it that when I look back at BTC, the historical volume is both integer and even-differential?

whjy2018-07-23 09:58:40 Error TypeError: cannot read property 'Last' of null at main (__FILE__:5) 2018-07-23 09:58:40 Futures_OKCoin error GetTicker: timeout This is a list of all the different ways OKCoin is credited in the database. 2018-07-23 09:58:20 info null BTC_USD This is a list of all the different ways BTC is credited in the database. Start the robot as empty as can be

chan122I want to run the data quickly for a five-minute judgment cycle when retesting, how should I set it up?

roshanzhengI would like to ask how the platform ensures the security of the user's exchange ID and KEY? for example, to ensure that there is no hackers who get the ID and KEY in bulk and then hijack the user's transaction instructions.

jklwonderHow does python get time to retest?

jkyeiPlease tell me why simnow shows: ((CTP_T@9999) Error: 75 CTP: The number of consecutive login failures has exceeded the limit, logging is prohibited

bijiasuoMark, number four, where do I see it?

wcg123Please tell me why the CCI is always 1 to 3 values different from the OKEX futures indicator, while all other indicators are correct.

Carpedium6740Invalid IP or incompatible with bound IP

AnclyHow do you get an order information when the simulation is retesting? What if exchange.GetOrder does not have an Order ID?

BOBOAccess to Binance's native API interface can be achieved with IO functions

Inventors quantify - small dreamsHello, you can send us your application and attach a specific screenshot to help you see it.

Inventors quantify - small dreamsYou can start an order and process it.

Inventors quantify - small dreamsThe variable mechanism of var is different from that of varip, which is returned to you in the workflow.

StalkerI tried two exit methods, one was to hang it directly on the bill when it was opened, and the code is as follows: if strategy.position_size >= 0 and Trend < 0 and TCI_bear This is a list of all the different ways Strategy.entry is credited in the database. This is a list of all the different ways Strategy.exit is credited in the database. state is equal to negative 1. trading_1: = 0 The other is exit, which uses the order finding method after entering, and the code is as follows ((Strangely, exit doesn't work directly in this way ((retrospective Figure 2), the order finding function is copied directly from the article)) if barstate.isrealtime and findOrderIdx (("SHORT") >= 0 and state == -1 state: = 0 This is a list of all the different ways Strategy.exit is credited in the database. And then there's the other thing, I don't know why the same signal is going on three times in a row, and the code is: if trading_1 == 0 and Trend == -1 and TCI_bear and strategy.position_size < 0 This is a list of all the different ways Strategy.entry is credited in the database. trading_1 := -1 Dreams always help to see what happens.

Inventors quantify - small dreamsThis is related to the design of specific strategies, see Strategy Analysis.

Inventors quantify - small dreamsHello, this is a specific exchange, the IO call code, which can send a job order for a specific scenario.

xaifer48Good. Thank you.

Inventors quantify - small dreamsIt is recommended to use a private host to install the necessary python libraries on your own device.

xaifer48I'm trying to make it look like the library doesn't support sympy, so I just write import sympy like this.

Inventors quantify - small dreamsHello, any python library can be imported, it needs to be installed in the python environment of the host's device system.

Inventors quantify - small dreamsHello, what is the specific question?

Inventors quantify - small dreamsIt is possible that the following direction is incorrect, check the parameter setting of the SetDirection () function.

Inventors quantify - small dreams It`s a problem with your device network. Try to change other device such as VPS in Singapore or England.

Inventors quantify - small dreamsThere are also other parameters to check, such as precision settings, see the article: https://www.fmz.com/digest-topic/5768

eth8888The slider is set to 5

Inventors quantify - small dreamsIf the slider addition is too small, you can adjust the slider parameter on the Mac language template class library.

Inventors quantify - small dreamsCurrently, QQ and WeChat groups have been disbanded, and you can click on the FMZ homepage to add a telegram link to the group.

Zhu YongshengHow many q groups?

Inventors quantify - small dreamsRe-tested with the exception of Bitcoin futures futures perpetual contracts, BitMex, and other non-capital fee mechanisms. There is currently no interface for obtaining capital fees. Use the HTTPQuery function or other web libraries to access the exchange's public interface for obtaining data related to capital fees in real time.

CarelessnessI looked at it, and it looked like it was, and I thought it was consistent with the real disk data.

Inventors quantify - small dreamsIf you look at the stock exchange's trading floor, it's probably the K line itself.

Carelessness/upload/asset/223d0ac6a9df9afd9e23c.png I'm not going to say that's the reason why I got the Wii U.

Inventors quantify - small dreamsIn this video, you can see a screenshot of specific issues and scenarios.

Inventors quantify - small dreamsThe policy is grammatically incorrect, check the policy code at line 115.

Inventors quantify - small dreamsThe image cannot be displayed. Copy specific error message.

Inventors quantify - small dreamsThe price transmission-1 is the real market price list. It must be done. FMZ API documentation is available.

Roasted cabbageSo, in fact, the functions like exchange.Buy (), etc. are actually a price cap, not a price cap. If the price fluctuates too fast, then it is difficult to make a deal after the order, what parameters can be set to make it a market price list?

Inventors quantify - small dreamsYes, but consider the frequency of interface access. Exchange interface requests are limited.

Roasted cabbageThe same interface, say this GetTicker method, can I simultaneously target 10 different transaction pairs and request this interface function at the same time?

Inventors quantify - small dreamsYou can scan the API documentation or the enterprise WeChat 2D code on the homepage and have a commissioner help you with it.

Inventors quantify - small dreamsWe can add enterprise two-dimensional code to WeChat processing that starts with the API documentation.

gaoyaxing24I've been trying to do this, and the results have been giving me an error message, suggesting that there is no method available in ext. There is no method available from dir. Is there an example?

Inventors quantify - small dreamsYes, you can see the API documentation for the three language descriptions.

Inventors quantify - small dreamsYou can add FMZ groups, QQ groups and WeChat groups to the FMZ homepage, and you can ask specific questions within the group and send specific screenshots.

cuteI understand, thank you Dreams.

Inventors quantify - small dreamsI don't quite understand what you mean, in the QQ group @me, look specifically. The code above you, if you have empty holds, continue to access position[1]... but you only access the instant position[0] of the index 0...

cuteThere's a blank holding, and this code has multiple heads and blank heads open at the same time, and the data in the position goes through, but there's no blank holding.

Inventors quantify - small dreamsNo empty holdings, empty holdings floating profit or loss is zero? No need to calculate. If you don't understand the concept, you can check it out.

cuteNo, you can only access data from multiple repositories, no empty repositories, source code. var n is equal to 0.005 // the initial prime number var Margin Level = 20 // The contract is leveraged function main (() { Exchange.SetContractType (swap) is the name of the exchange. Exchange.Set the margin level var position = [] while (true) { var account = exchange.GetAccount position = exchange.GetPosition (()) if (position.length == 0) { exchange.SetDirection (("sell") exchange.Sell ((-1, n, "open", "multiplier parameter:", q = 1, "account total:", account.Balance) exchange.SetDirection (("buy") exchange.Buy ((-1, n, "Multiple", "Multiple parameters:", x = 1, "Account total:", account.Balance) I'm not sure. if (position.length > 0) { Log ((position[0]) Sleep (((12000) is the name of the game I'm not sure. I'm not sure. I'm not sure.

Inventors quantify - small dreamsGetPosition returns an array that contains both empty and multi-position structures.

Inventors quantify - small dreamsWhat do you suggest?

Inventors quantify - small dreamsIf the ladder is on, try to turn it off.

Inventors quantify - small dreamsYou can post it. But don't violate, violation will be punished.

Inventors quantify - small dreamsPublic hosts are generally used for testing, practice, and real-world recommendations to run hosts using your own equipment.

The bone knifeIt's me too -'', the elderly look at the font bar, set the browser font too large, a page can only see the question and answer side, does not show the question and answer side.

Inventors quantify - small dreams /upload/asset/16011a2067f6ff610b2b.png

Inventors quantify - small dreamsIn this case, the first step is to get rid of the position that is about to be delivered, and open the position with a new main contract.

wwq4817 /upload/asset/17ae92e032761f21d020f.png

Inventors quantify - small dreamsI'm not sure what the opposite position means.

17606551005fmzI understand. Thank you.

Inventors quantify - small dreamsThere is no transaction in the order. There will be no holdings. Try to eat the price of the counter, then try to exceed the price a bit.

Inventors quantify - small dreamsThe code above the 102nd line (including the 102nd line) can be used to check if it is a _C function.

Inventors quantify - small dreamsThe JS library is located at http://underscorejs.org/

Inventors quantify - small dreamsYou can, set the Mac language: Mac language transaction library parameters, execution method: real-time price model /upload/asset/166d993a8809d6f7f518.png This is a list of all the different ways Upload/asset/166d993a8809d6f7f518.png is credited in the database.

Inventors quantify - small dreamsThis is the first time that the campaign has been held in the city. https://www.fmz.com/strategy/125569

Inventors quantify - small dreamsThese types of walled exchanges, usually with a foreign server, run a custodian, which is then assigned to a robot to run the custodian, so that the local computer does not have to be kept running because the bot program is running on the server where the custodian is located.

Inventors quantify - small dreamsI'm not being polite.

wufuhao100wOh, it was in the back, thank you!

Inventors quantify - small dreamsThe following shows the cause of the problem: Check if the API is enabled.

wufuhao100wFutures_OP 0: 403: {"error":{"message":"Access Denied","name":"HTTPError"}} Specific number 72

Inventors quantify - small dreamsWhat specifically is the issue? What is the number?

wufuhao100wWhere to watch it?

wufuhao100wI have no solution to all the above problems...

Inventors quantify - small dreamsWhat question?

Inventors quantify - small dreamsIf you're using python, import this DLL with a random name, but it's a random one because of the character set. Check the following policy to import those libraries.

The grassIt saves time when accessing multiple interfaces simultaneously.

Inventors quantify - small dreamsFor details, see the API documentation for the description of the list price, the second parameter entered when buying is the amount, not the number of coins.

Inventors quantify - small dreamsCan be saved with _G For more details, see the API documentation.

Inventors quantify - small dreamsThis requires writing a program. Visit the GetPosition interface to query the original information, which should contain relevant data.

Inventors quantify - small dreamsThis 10007 is the error code of the exchange, https://www.fmz.com/bbs-topic/597 The post is a compilation of the exchange's API documentation, which can be consulted for the error code information of the relevant exchange.

Inventors quantify - small dreams1, `` ` ERR_INSUFFICIENT_ASSET `` ` This is an asset shortfall and it's a down payment. 2、```TypeError: Cannot convert "null" to double`` This is a passing parameter Passed an error, the parameter requested to be passed is a numeric type, passing a null null value. This direct translation of Bauda literally means you probably already know.

Inventors quantify - small dreamsYou can read the Inventor Knows column here: https://zhuanlan.zhihu.com/p/27300549 This article is about the article.

Inventors quantify - small dreamsWhat exactly is the problem?

Inventors quantify - small dreamsThere should be lots of Baidu VPS, Amazon, Ali Cloud, other regions and so on.

Inventors quantify - small dreamsWhich interface is being called specifically? The depth interface in the feedback system is analog data except for the first class. Some of the data is not critical and is simulated.

Inventors quantify - small dreamsThis is asymmetrical encryption, as long as you keep your FMZ password, but this is a security issue and core technology, too many details cannot be told, please forgive.

Inventors quantify - small dreamsIs it sleep in Python's time packet?

chan122sleep ((300) and wait 300 seconds to retest.

Inventors quantify - small dreamsYes, renting one on Amazon and so on.

whjyHow to solve it Do you use a foreign server directly?

Inventors quantify - small dreamsAccess to the exchange is out of date, currently only foreign servers can access OKEX.

Inventors quantify - small dreamsYou can update the K-line for 5 minutes and skip the rest of the time with Sleep.

The grassThe conditions are too harsh.

The grassThe API key is encrypted with a password plain text, you need to enter the password when you enter the key, botvs does not save plain text, so no problem

Inventors quantify - small dreamsWell, thank you for the suggestion, the security mechanism development etc. is the responsibility of another department, which I may not be very clear about.

Old cat likes fishThis is called symmetric encryption. When uploading the API key, the password of the botvs is entered for encryption. When deploying the host, the input is still the password of the botvs for decryption. If the encrypted APKEY stored in the botvs is leaked, the user's botvs password can be decrypted to obtain the key. This is not safe. It is recommended to switch to a non-asymmetrical public-private key. The public key is used to encrypt uploads, the private key is only in the hands of the user and is only used when the host is deployed.

Inventors quantify - small dreamsBotVS is asymmetrical, does not store plaintext API KEY, user server local decryption is used. Unless the user server is blacklisted, or the user's own password is leaked.

Old cat likes fishThanks for the reply. Learn more about the whole process of using the API key: First, we enter the API key on the botvs website and submit it. 2, encrypted, transmitted via https to the botvs server and saved; The botvs server pushes the encrypted API key to the host. 4. The custodian will decrypt the API key received locally to connect to the corresponding exchange. So, this is a symmetrical encryption. In other words, if the botvs server is hacked, or if internal staff have a work ethic issue, the key will be leaked. Is that what I understand? If this is the case, it is recommended to switch to asymmetric encryption to store the key. The user enters the private key at the trustee to start the exchange connection.

Inventors quantify - small dreamsIt has been updated, see explanation at page 47.

Inventors quantify - small dreamsIt has been updated, see explanation at page 47.

Old cat likes fishShake hands, I'm the old coding dog who just got in touch with botvs.

Inventors quantify - small dreamsThis is how the current time is written in Python code. What's up? Import time def main (: Log (("Current time:", _D(time.time))) # output the current time. What's up?

Inventors quantify - small dreamsIt's not polite.

Carpedium6740This is the problem, solved, thank you.

Inventors quantify - small dreamsIt should be a password configuration error, failure to log in over the limit, can be caused, please contact simnow customer service, request to unlock. If you change the BotVS password, the configuration will fail and you will need to reconfigure it.

Inventors quantify - small dreamsIt is possible that some of the indicators used by OK are different from those implemented by Talib library. Several are, such as STOCHRSI

Inventors quantify - small dreamsThis issue should be because the whitelist address was set when you applied for the Exchange API KEY, and then you actually created a bot. The IP address used when you accessed the Exchange API KEY is not on this whitelist, you can check the settings when you applied for the API KEY below.

Inventors quantify - small dreamsIf you don't have an ID, you don't know which order to ask for.